pair标准库类型它定义在头文件utility中。

一个pair保存两个数据成员。类似容器,pair是一个用来生成特定类型的模板。当创建一个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的默认构造函数对数据成员进行值初始化。因此,anon是一个包含两个空string的pair。line保存一个空string和一个空vector。word_count中的size_t成员值为0,而string成员被初始化为空。

我们可以为每一个成员提供初始化器:

pair<string,string>author{"James","Joyce"};

这条语句创建了一个author的pair,两个成员被初始化为“James”和“Joyce”。

与其他标准类型不同,pair的数据成员是public。两个成员分别为first和second。我们用普通的成员访问符号来访问他们。

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的类型推断出来。
p1==p2//当first和second成员分别相等时,两个pair相等。相等性判断利用元素的==运算符实现。

  

使用场景:当我们要对map的values进行排序时可以先把map中的元素转化为pair在一个一个存入vector中,然后就可以进行排序了。为什么呢?因为pair‘的数据成员是public的,而map的数据成员是private的所以没法直接对map的数据成员进行操作,但是可以直接对pair的数据成员进行排序。

STL pair类型的介绍的更多相关文章

  1. STL之pair类型具体分析

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

  2. STL之pair类型

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

  3. C++pair类型

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

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

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

  5. pair类型 这次遇到了,记录下来,方便彼此xue习

    首先,这个pair类型是在头文件utility.h中. 一个piar保存两个数据成员,是用来生成特定类型的模板,当创建一个pair时,我们必须提供两个类型名,pair的数据成员将具有对应的类型,两个类 ...

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

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

  7. iis中MIME类型的介绍与使用

    今天在服务器上碰到由.mp3格式转化生成的.m4r格式不能被浏览器访问(MP3与m4r在同个域名目录下eg:www.abc.com/1.m4r) 解决办法: 1.选中文件所在的站点: 2.找到MIME ...

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

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

  9. C++ STL pair详解

    一.解释: p { margin-bottom: 0.25cm; direction: ltr; color: #00000a; line-height: 120%; text-align: left ...

随机推荐

  1. MySQL 字符串分隔成行&子串统计

    利用help_topic表把字符串转换成行(分隔符号',') ),) as `id` FROM mysql.`help_topic`; 统计字符串每个子串出现次数(分隔符号',') ),) AS `s ...

  2. JS---DOM---点击操作---part2---14个案例

    案例1:点击按钮禁用文本框 <input type="button" value="禁用文本框" id="btn" /> < ...

  3. iOS----------jenkins

    错误日志: ERROR: Error fetching remote repo 'origin' Finished: FAILURE ERROR: Error cloning remote repo ...

  4. Redis基础类型常用操作命令

    Redis基础类型常用操作命令 概念:Redis是用C语言开发的一个开源的高性能键值对数据库. 特征: 数据间没有必然的联系 内部采用单线程机制进行工作 高性能 多数据类型支持 字符串类型 Strin ...

  5. 数据治理的王者——Apache Atlas

    一.Atlas是什么? 在当今大数据的应用越来越广泛的情况下,数据治理一直是企业面临的巨大问题. 大部分公司只是单纯的对数据进行了处理,而数据的血缘,分类等等却很难实现,市场上也急需要一个专注于数据治 ...

  6. 第十六届浙江大学宁波理工学院程序设计大赛 D 雷顿女士与分队hard version(dp)

    题意 链接:https://ac.nowcoder.com/acm/contest/2995/D来源:牛客网 卡特莉接到来自某程序设计竞赛集训队的邀请,来为他们进行分队规划. 现在集训队共有n名选手, ...

  7. 逻辑卷管理器LVM

    逻辑卷管理器LVM •将设备指定为物理卷 • 用一个或者多个物理卷来创建一个卷组 • 物理卷是用固定大小的物理区域(Physical Extent,PE)来定义的 • 在物理卷上创建的逻辑卷是由物理区 ...

  8. 构造函数new运算符进行了哪些操作

    new 运算符 1,实例化一个对象 2,将构造函数prototype对象赋值给对象__proto__属性 3,将对象作为函数this传进去,函数有return 并且是对象的话,就直接返回return的 ...

  9. python大作业二

    一.存入csv 上次爬取到了所需要的内容,但是没有存入到csv中,这次存入了csv文件中,代码如下: import requests from bs4 import BeautifulSoup imp ...

  10. 剑指Offer-43.左旋转字符串(C++/Java)

    题目: 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果.对于一个给定的字符序列S,请你把其循环左移K位后的序列输出.例如,字符序列S=”abcX ...