C++容器(三):pair类型
pair类型
在开始介绍关联容器之前,我们有必要了解一种与之相关的标准库类型–pair
类型。
操作 | 含义 |
---|---|
pair<T1, T2> p1 |
创建一个空的pair 对象,它的两个元素分别为T1 和T2 类型,采用值初始化 |
pair<T1, T2> p1(v1, v2) |
创建一个pair 对象,它的两个元素分别是T1 和T2 类型,其中first 成员初始化为v1 ,second 成员初始化为v2 |
make_pair(v1,v2) |
以v1 和v2 创建一个新的pair 对象,其元素类型分别是v1 和v2 的类型 |
p1 < p2 |
两个pair 对象之间的小于运算,其定义遵循字典顺序:如果p1.first < p2.first 或者!(p2.first < p1.first) && p1.second < p2.second ,则返回true |
p1 == p2 |
如果两个pair 对象的first 和second 成员依次相等,则两个对象相等,返回true |
p.first |
返回p 中名为first 的(公有)数据成员 |
p.second |
返回p 中名为second 的(公有)数据成员 |
pair
类型包含两个数据值,与容器一样,pair
也是一种模板类型。在创建pair
对象时,必须提供两个类型名:pair
对象所包含的两个数据成员各自对应的类型名字,这两个类型名字不必相同:
pair<string, string> strs; // holds two string
pair<string, int> wordCount; // holds a string and an int
pair<string, vector<int>> line; // holds a string and a vector<int>
如果在创建pair
对象时不提供初始化式,则调用默认构造函数对其成员采用值初始化。当然,也可以定义时提供初始化式:
pair<string, string> author("James", "Joyce");
// or use typedef
typedef pair<string, string> Author;
Author author("Marcel", "Joyce");
生成新的pair
对象,除了上述的利用构造函数方法外,标准库中定义的make_pair
函数,由传递给它的两个实参生成一个新的pair
对象:
pair<string, string> nextAuthor;
string first, second;
while( cin >> first >> second)
{
// generate a pair from first and last
nextAuthor = make_pair( first, second );
// process nextAuthor ...
}
// or
nextAuthor = pair<string, string>(first, second);
// or
cin >> nextAuthor.first >> nextAuthor.second;
参考文献:
- 《C++ Primer中文版(第四版)》,Stanley B.Lippman et al. 著, 人民邮电出版社,2013。