首先,这个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. SQLServer bigint 转 int带符号转换函数(原创)

    有一个需求是要在一个云监控的状态值中存储多个状态(包括可同时存在的各种异常.警告状态)使用了位运算机制在一个int型中存储. 现在监控日志数据量非常大(亿级别)需要对数据按每小时.每天进行聚合,供在线 ...

  2. 用nginx实现分布式限流

    1.前言 一般对外暴露的系统,在促销或者黑客攻击时会涌来大量的请求,为了保护系统不被瞬间到来的高并发流量给打垮, 就需要限流 . 本文主要阐述如何用nginx 来实现限流. 听说 Hystrix 也可 ...

  3. 注释及Scriptlet

    1.显式注释 <!--xxxxxx-->,在正常页面上也看不出来,右键鼠标查看源代码可以看到 2.隐式注释 //xxxxx /*xxxxxx*/ <%--xxxxxxx--> ...

  4. sql日期提取

    --插入数据修改不行:必须提供学号 insert into Student(生日类型) values('阳历') --把月份提取出来 显示两位数 select DATENAME(month,getda ...

  5. Use emcli to delete obsolete agent targets in Oracle EM Cloud Control 12c

    [oracle@oem ~]$ cd /oem/oms/oms/bin   登录到oms中 [oracle@oem bin]$ ./emcli login -username=sysman Enter ...

  6. Centos6防火墙基本配置

    1. 允许x.x.x.x访问本机 iptables -I INPUT -p tcp -j DROP #若要添加多了ip,该条也是只执行一次 iptables -I INPUT -s x.x.x.x - ...

  7. ansible - 基本用法

    目录 ansible - 01 一. 安装与使用 ansible命令格式 查看ansible生成的配置文件 ssh认证方式 ansible的第一个命令 弱口令校验 host-pattern的格式 模块 ...

  8. 8.1.2 Cursor 对象

    游标Cursor也是sqlite3模块中比较重要的一个类,下面简单介绍下Cursor对象的常用方法. 1 execute(sql[,parameters]) 该方法用于执行一条SQL语句,下面的代码演 ...

  9. 并发通信Manage,队列, 互斥锁

    目录 Manage 队列  先入先出 互斥锁 Manage 进程间的通信是被限制的 from multiprocessing import Process a = 1 def func(): glob ...

  10. Java基础学习总结(73)——Java最新面试题汇总

    1.super()与this()的区别? this():当前类的对象,super父类对象. super():在子类访问父类的成员和行为,必须受类继承规则的约束 而this他代表当前对象,当然所有的资源 ...