基本概念
pair
- pair 是一个比较简单的模板类型,它只有两个 public 数据成员 first 和 second。
- pair 对象可以封装任意类型的对象,可以生成任何想生成的 pair<T1,T2> 对象,可以是数组对象或者包含 pair<T1,T2> 的 vector 容器。例如,pair 可以封装两个序列容器或两个序列容器的指针。pair<T1,T2> 模板定义在 utility 头文件中,如果不想使用 map 而只想使用 pair 对象,可以包含这个头文件。
头文件
1 2 3
| # include<utility> 或者 # include<map>
|
模板
pair初始化方法
1 2 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() 来完成同样的操作。
1 2
| 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)
|
1 2 3
| std::pair<int,char> foo (10,'a'); std::pair<int,char> bar (90,'z'); swap (foo,bar);
|
常用操作
查找
1 2 3 4
| 访问pair内元素操作 q.first; 返回成员第一个数据 q.second; 返回成员第二个数据
|
比较
1
| p1 == p2 如果两个 pair 对象的 first 和 second 成员依次相等,则这两个对象相等。该运算使用其元素的 == 操作符
|
在中已经定义了pair上的六个比较运算符:<、>、<=、>=、==、!=
,其规则是先比较first,first相等时再比较second,这符合大多数应用的逻辑
参考资料
STL之pair类型详细分析
C++ set初始化(STL set初始化)详解
C++标准库容器类概述