基本概念
pair
- pair 是一个比较简单的模板类型,它只有两个 public 数据成员 first 和 second。
- pair 对象可以封装任意类型的对象,可以生成任何想生成的 pair<T1,T2> 对象,可以是数组对象或者包含 pair<T1,T2> 的 vector 容器。例如,pair 可以封装两个序列容器或两个序列容器的指针。pair<T1,T2> 模板定义在 utility 头文件中,如果不想使用 map 而只想使用 pair 对象,可以包含这个头文件。 
头文件
| 12
 3
 
 | # include<utility>或者
 # include<map>
 
 | 
模板
pair初始化方法
| 12
 3
 4
 5
 6
 7
 8
 9
 
 | pair<int,int>q;       创建一个空对pair<int,int>p(2,3);  创建一个对p,并分别赋值2,3
 pair<int,int>s(p);    创建一个对s,拷贝p给s
 pair<string, string> anon;
 pair<string, int> word_count;
 pair<string, vector<int> > line;
 
 赋值利用make_pair函数
 q = make_pair(1,2);
 
 | 
如果在创建 pair 对象时不提供初始化式,则调用默认构造函数对其成员采用值初始化。int初始化为0,string初始化为空;
交换
swap(pair<T1,T2>& other):和参数的元素进行交换,所包含对象的类型必须相同。:将当前 set 中的元素和参数 set 中的元素交换。它们需要包含相同类型的元素。也可以调用全局函数模板 swap() 来完成同样的操作。
| 12
 
 | template <class T1, class T2> void swap(pair<T1,T2> &x) 重载1:x.swap(y)template <class T1, class T2> void swap (pair<T1,T2>& x, pair<T1,T2>& y)  重载2: swap(x, y)
 
 | 
| 12
 3
 
 | std::pair<int,char> foo (10,'a');std::pair<int,char> bar (90,'z');
 swap (foo,bar);
 
 | 
常用操作
查找
| 12
 3
 4
 
 | 访问pair内元素操作
 q.first;  返回成员第一个数据
 q.second; 返回成员第二个数据
 
 | 
比较
| 1
 | p1 == p2	如果两个 pair 对象的 first 和 second 成员依次相等,则这两个对象相等。该运算使用其元素的 == 操作符
 | 
在中已经定义了pair上的六个比较运算符:<、>、<=、>=、==、!=,其规则是先比较first,first相等时再比较second,这符合大多数应用的逻辑
参考资料
STL之pair类型详细分析
C++ set初始化(STL set初始化)详解
C++标准库容器类概述