首先,这个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());

谢谢!!

pair类型 这次遇到了,记录下来,方便彼此xue习的更多相关文章

  1. C++pair类型

    标准库类型--pair类型定义在utility头文件中定义 本文地址:http://www.cnblogs.com/archimedes/p/cpp-pair.html,转载请注明源地址. 1.pai ...

  2. C++ Primer : 第十一章 : 关联容器之概述、有序关联容器关键字要求和pair类型

    标准库定义了两种主要的关联容器:map和set map中的元素时一些关键字-值(key-value)对,关键字起到索引的作用,值则表示与索引相关的数据.set中每个元素只包含一个关键字,可以完成高效的 ...

  3. C++ Primer 学习笔记_34_STL实践与分析(8) --引言、pair类型、关联容器

    STL实践与分析 --引言.pair类型.关联容器 引言:     关联容器与顺序容器的本质差别在于:关联容器通过键[key]来存储和读取元素,而顺序容器则通过元素在容器中的位置顺序的存取元素. ma ...

  4. C++ pair 类型

    Pair类型概述 pair是一种模板类型,其中包含两个数据值,两个数据的类型可以不同,基本的定义如下: pair<int, string> a; 表示a中有两个类型,第一个元素是int型的 ...

  5. pair类型

    pair是一个模板数据类型,其中包含两个数据值,两个数据值可以不同 如 pair<int,string>a(2,"fgh");则a是一个pair类型,它包括两个数据,第 ...

  6. STL之pair类型具体分析

    pair定义于头文件utility中.基本的作用是将两个数据组合成一个数据,两个数据能够是同一类型或者不同类型. pair类型提供的操作: pair<T1,T2> p1; pair< ...

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

    pair类型 在开始介绍关联容器之前,我们有必要了解一种与之相关的标准库类型–pair类型. 操作 含义 pair<T1, T2> p1 创建一个空的pair对象,它的两个元素分别为T1和 ...

  8. STL之pair类型

    C++ pair 类型 ---心怀虔诚,细细欣赏! 编程实践: Practice:编写程序读入一系列string和int型数据,将每一组存储在一个pair对象中,然后将这些pair对象存储在vecto ...

  9. C#值类型以及默认值记录下

    C#的值类型有bool,byte,sbyte,decimal,double,float,int,uint,long,string等 如果我们擅长使用默认值,可以帮助我们减少带来赋值及代码编写. 比如我 ...

随机推荐

  1. [Windows Server 2012] 安装PHP+MySQL方法

    ★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频.★ 本节我们将带领大家:PHP+MyS ...

  2. 8、scala面向对象编程之对象

    1.  Object 2.伴生对象 3.让object继承抽象类 4.apply方法 5.main方法 6.用object实现枚举功能 1.  Object Object,相当于class的单个实例, ...

  3. C# 调用指定打印机 (并不是默认)

    this.printDocument1.PrinterSettings.PrinterName = "Microsoft XPS Document Writer"; this.pr ...

  4. Python 之pdb调试

    # 调试方式一:python -m pdb test.py # 相关命令: # l 查看当前代码 # n 向下执行一行代码 # c continue继续执行代码 # b break + 行数 添加断点 ...

  5. ngFor 循环带索引

    *ngFor="let item of userList,let i = index"   或者 *ngFor="let item of userList index a ...

  6. ES6 箭头函数this指向问题

    var name = "window"; var person1 = { name: "person1", show1: function() { consol ...

  7. linux - redis基础

    目录 linux - redis基础 redis 源码编译安装 redis 数据结构 1. strings类型 2. list 类型 3. sets集合类型 有序集合 5. 哈希数据结构 centos ...

  8. 【1657: [蓝桥杯][算法训练VIP]】统计单词个数

    [链接] 我是链接,点我呀:) [题意] 题意 [题解] 设dp[i][j]表示前i个字符分成j个部分的最多匹配单词个数. 则dp[i][j] = dp[prei][j-1] + get_num(pr ...

  9. 【POJ 1981】Circle and Points(已知圆上两点求圆心坐标)

    [题目链接]:http://poj.org/problem?id=1981 [题意] 给你n个点(n<=300); 然后给你一个半径R: 让你在平面上找一个半径为R的圆; 这里R=1 使得这个圆 ...

  10. Lucas小记

    组合数学全忘了 记笔记记笔记 做个简单题 代码 from bzoj4403 #include <stdio.h> #define p 1000003 typedef long long l ...