首先,这个pair类型是在头文件utility.h中。

一个piar保存两个数据成员,是用来生成特定类型的模板,当创建一个pair时,我们必须提供两个类型名,pair的数据成员将具有对应的类型,两个类型不要求一样:如下:

pair<string,string> anon;//保存两个string

pair<string,size_t> word_count;//保存一个string和一个size_t;

pair<string,vector<int>> line;//保存string和vector<int>

接下来我们为每个成员提供初始化器:

pair <string,string> author{"jm","joy"};

这条语句创建一个名为author的pair,两个成员被初始化为“jm”和“joy”。下面介绍pair上的操作:

pair<T1,T2> p;

这里p是一个pair型,两个类型分别为T1和T2的成员都进行了初始化。

pair<T1,T2> p(v1,v2);

p是一个成员类型为T1和T2的pair,first和second成员分别用v1和v2进行初始化;

pair<T1,T2>p={v1,v2};这个等价于p(v1,v2);

make_pair(v1,v2);返回一个用v1和v2初始化的pair。pair的类型从v1和v2的类型中推断出来。

p.first;返回p的名为first的公有数据成员

p.second;返回p的名为second的公有数据成员。

p1 relop p2 关系运算符(<,>,<=,>=)按字典序定义,例如,p1.first<p2.first或者!(p2.first<p1.first)&&p1.second<p2.second成立时

,p1<p2为true。关系运算符利用元素的<运算符来实现。

p1 == p2 ,p1!=p2,当first和second成员分别相等时,两个pair相等,相等性判断利用元素的==运算符进行实现。

创建pair对象的函数

如果有一个函数需要返回一个pair,在新标准下,我们可以对返回值进行列表初始化,如

pair<string,int>

process(vector<string> &v)

{

if(!v.empty())

return {v.back(),v.back().size()};//列表初始化

else

return pair<string,int>();//隐式构造函数返回值

}

此外还可以使用下面两种方法进行初始化列表返回

if(!v.empty())

return pair<string,int>(v.back(),v.back().size());

还可以用make_pair生成pair对象,

if(!v.empty())

return make_pair(v.bakc(),v.back().size());

谢谢!!

最新文章

  1. CSU 1597 薛XX后代的IQ
  2. 64位centos 下编译 hadoop 2.6.0 源码
  3. Google的Bigtable学习笔记(不保证正确性)
  4. [resource]23个python的机器学习包
  5. EntityFrame6在本地可以正常使用,部署到IIS后报异常(Additional information: The underlying provider failed on Open.)
  6. 使用Sass预定义一些常用的样式,非常方便(转)
  7. c printf
  8. 使用OC和swift创建系统自带的刷新界面
  9. awk 中 FS的用法
  10. C# 代码规范和质量检查工具 StyleCop.Analyzers
  11. 小程序view排版
  12. day84-仿照admin实现一个自定义的增删改查组件
  13. php使用phpexcel导出文件
  14. Chunk
  15. 03_Spark集群部署
  16. 【BZOJ】1218: [HNOI2003]激光炸弹(前缀和)
  17. [转]ASP.NET Web API基于OData的增删改查,以及处理实体间关系
  18. idea ssm框架搭建
  19. SummerVocation_Learning--java的线程机制
  20. linux下robotframework执行测试用例的几种方法

热门文章

  1. Python 之糗事百科多线程爬虫案例
  2. 解决 The file will have its original line endings in your working directory
  3. 图像处理中创建CDib类时无法选择基类类型时怎么办
  4. iOS标准库中常用数据结构和算法之查找
  5. maven常用dos命令
  6. SolidWorks学习笔记(一)
  7. Oracle 数据库连接的一些坑
  8. Error: Registry key &#39;Software\JavaSoft\Java Runtime has value &#39;1.8&#39;, but &#39;1.7&#39; is
  9. Capture the Flag ZOJ - 3879(模拟题)
  10. Centos 7中,防火墙配置端口规则