C++容器(三):pair类型

pair类型

在开始介绍关联容器之前,我们有必要了解一种与之相关的标准库类型–pair类型。

操作 含义
pair<T1, T2> p1 创建一个空的pair对象,它的两个元素分别为T1T2类型,采用值初始化
pair<T1, T2> p1(v1, v2) 创建一个pair对象,它的两个元素分别是T1T2类型,其中first成员初始化为v1second成员初始化为v2
make_pair(v1,v2) v1v2创建一个新的pair对象,其元素类型分别是v1v2的类型
p1 < p2 两个pair对象之间的小于运算,其定义遵循字典顺序:如果p1.first < p2.first或者!(p2.first < p1.first) && p1.second < p2.second,则返回true
p1 == p2 如果两个pair对象的firstsecond成员依次相等,则两个对象相等,返回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。

posted on 2015-10-01 15:55  疯子123  阅读(1227)  评论(0编辑  收藏  举报

导航