STL_pair<>

在日常使用中常会有这样的操作,一个对象有多个属性,在排序时,我们会先比较一种属性,当这个属性相等时我们会对下一个属性进行比较。这个时候键值对”pair<>”就能够十分高效地使用:

 template<typename T1, typename T2> struct pair {

      T1 first;

      T2 second;

};

当然,普通的使用比如pair<int,int>可以利用其他的方式也能非常方便地实现。但是如果是例如vector<pair<string>,pair<int,int> >这样的结构呢?不得不说,类似的结构是非常好用且极为常用的,比如说在存储多边形的多个点时,以类似的结构存储并使用STL的排序函数进行排序,就可以使这些多边形上的点按照希望的顺序排列好

时间: 2024-10-18 13:42:48

STL_pair<>的相关文章

《STL源码剖析》---stl_pair.h阅读笔记

pair是STL中的模板类型,它可以存储两个元素,它也被称作"对组".在map中已经用到了它,pair其实就是一个struct结构,存有两个public的元素,重载了几个运算符,没有什么成员函数,源代码很简单. G++ 2.91.57,cygnus\cygwin-b20\include\g++\stl_pair.h 完整列表 /* * * Copyright (c) 1994 * Hewlett-Packard Company * * Permission to use, copy,

STL 源码分析 # stl_pair #

pair是一种很简单也很常用的关联容器(associative container). /*********************************************** Programmer : EOF Date : 2015.04.10 File : pair.cpp E-mail : [email protected] ***********************************************/ #include <iostream> #include

std::map使用结构体自定义键值

使用STL中的map时候,有时候需要使用结构题自定义键值,比如想统计点的坐标出现的次数 struct Node{ int x,y; }; ...... map<Node,int>mp; mp[(Node){x,y}]++; 这样子的话,会出现一堆报错 c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\stl_function.h||In instantiation of 'bool std::less<_Tp>::operator()(

Ch5 关联式容器(中)

5.3 set 所有元素都会根据元素的键值自动被排序,set元素的键值就是实际值,实际值就是键值,set不允许两个元素有相同的键值: 因为set元素的值就是其键值,关系到set元素的排列规则,所以set的迭代器是constant iterator: 对set进行insert或erase操作,其迭代器在操作后仍然有效(这点和list相同): 标准STL的set是以RB-tree为底层机制的,几乎所有的set操作行为,都只是调用RB-tree的操作行为而已. 5.4 map 所有元素都会根据元素的键

stl_algobase.h

stl_algobase.h // Filename: stl_algobase.h // Comment By: 凝霜 // E-mail: [email protected] // Blog: http://blog.csdn.net/mdl13412 // 这个文件中定义的都是一些最常用的算法, 我仅仅给出一个思路, // 不进行详尽讲解, 具体算法请参考算法书籍, 推荐<算法导论> // 另外, 对于基础薄弱的, 推荐<大话数据结构>, 此书我读了一下 // 试读章节, 适

QT5.6.0无法切换fcitx中文输入法问题记录

前言:参考了网上一堆的文章,还是出现了一堆的问题,一句话能用apt-get install安装的千万别自己下源码编译,没有新版本就GOOGLE 关键字+PPA找到新版本源,用add-apt-repository命令添加,然后update下,再apt-get install试试有没有,如果要学习另当别论. 一 原因分析: 根据网上和自己的编译经验分析觉得QT5.6之所以无法切换fcitx的输入法是因为qt5的库文件和插件都没有加入fcitx输入法管理工具的相关支持,可能能用ibus,因为我在pla

Cocos2dX Android 编译出错

在编译的时候老是出问题,真不知道是吭还是吭呢?一夜不眠的思考想到了一个问题可能是Application.mk的配置是不是有问题,在测试中证明了我的想法是正确的 jni/../../platform/android/PluginUtils.cpp:75: error: undefined reference to 'std::string::_Rep::_S_empty_rep_storage' /Users/daisy/Documents/software/anysdk/adt-bundle-m

C++中map的用法

map的特性是,所有元素都会根据元素的减值自动被排序.map的所有元素都是pair,同时拥有实值(value)和键值(key).pair的第一个元素会被视为键值,第二个元素会被视为实值.map不允许两个元素拥有相同的键值. 下面看一下<stl_pair.h>中的pair定义: template <class T1, class T2> struct pair{ typedef T1 first_type; typedef T2 second_type; T1 first;//注意,

STL源码剖析——基本算法stl_algobase.h

前言 在STL中,算法是经常被使用的,算法在整个STL中起到非常重要的作用.本节介绍的是一些基本算法,包含equal,fill,fill_n,iter_swap,lexicographical_compare,max,min,mismatch,swap,copy,copy_backward,copy_n.其中一个比较重要的算法就是copy,针对copy的剖析在源码中可以看到详细的注解.本文剖析的源码出自SGL STL中的<stl_algobase.h>文件. 基本算法剖析 #ifndef __