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。

最新文章

  1. selenium 介绍1
  2. python——请求服务器(http请求和https请求)
  3. JS闭包中的this对象
  4. 【Evaluate Reverse Polish Notation】cpp
  5. 一篇文章让你彻底搞清楚Python中self的含义
  6. Eclipse debug调试
  7. final 、finally 和 finalize()的区别
  8. javascript中自定义事件
  9. python 3.3.3 字面量,正则,反斜杠和原始字符串
  10. 「Python」6种python中执行shell命令方法
  11. idea新建一个spring项目,图解
  12. ucml JS调用其它页面上的服务端方法
  13. [No000018E]Vim快速跳转任意行、任意列以及高亮显示当前行、当前列方法-Vim使用技巧(3)
  14. MySQL--派生表Condition Pushdown优化
  15. oracle_sql语句的大全
  16. 图灵社区 书单推荐:成为Java顶尖程序员 ,看这11本书就够了
  17. java请求url返回json
  18. 从HiveQL到MapReduce job过程简析
  19. Qt 之模型/视图(自定义按钮)
  20. js call、apply和bind

热门文章

  1. event 下鼠标坐标的获取
  2. linux 源码包安装拾遗
  3. BZOJ 3675 [Apio2014]序列分割 (斜率优化DP)
  4. MyEclipse背景与字体大小和xml文件中字体大小调整
  5. python 添加自定义库
  6. 2019-03-28 Python SQL 的注释
  7. java EE使用response返回中文时,出现乱码问题
  8. 《你又怎么了我错了行了吧团队》第七次作业:团队项目完善&amp;编码
  9. webpack操作基础
  10. 命令行 对MYSQL导入sql