C++pair类型

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

1、pair的创建和初始化

pair包含两个数值,与容器一样,pair也是一种模板类型。但是又与之前介绍的容器不同,在创建pair对象时,必须提供两个类型名,两个对应的类型名的类型不必相同

pair<string,string>anon;
pair<string,int>word_count;
pair<string, vector<int> >line;

当然也可以在定义时为每个成员提供初始化式:

pair<string,string>author("James","Joy");

pair类型的使用相当的繁琐,如果定义多个相同的pair类型对象,可以使用typedef简化声明:

typedef pair<string,string> Author;
Author proust("March","Proust");
Author Joy("James","Joy");

2、pair对象的操作

对于pair类,可以直接访问其数据成员:其成员都是公有的,分别命名为first和second,只需要使用普通的点操作符

string firstBook;
if(author.first=="James" && author.second=="Joy")firstBook="Stephen Hero";

3、生成新的pair对象

除了构造函数,标准库还定义了一个make_pair函数,由传递给它的两个实参生成一个新的pair对象

pair<string, string> next_auth;
string first,last;
while(cin>>first>>last) {next_auth=make_pair(first,last);//...
}

还可以用下列等价的更复杂的操作:

next_auth=pair<string,string>(first,last);

由于pair的数据成员是公有的,因而可如下直接地读取输入:

pair<string, string> next_auth;
while(cin>>next_auth.first>>next_auth.last) {//...
}

4、编程实践

练习:编写程序读入一系列string和int型数据,将每一组存储在一个pair对象中,然后将这些pair对象存储在vector容器

#include<iostream>
#include<string>
#include<vector>
#include<utility>
using namespace std;int main()
{pair<string, int>p;typedef vector< pair<string, int> > VP;VP vp;for (int i = 0; i < 5; i++) {cin >> p.first >> p.second;vp.push_back(make_pair(p.first, p.second));}VP::iterator it;for (it = vp.begin(); it != vp.end(); it++)cout << it->first << "," << it->second << endl;system("pause");return 0;
}

出处:http://www.cnblogs.com/wuyudong/

c++ pair 用法详解相关推荐

  1. C++ STL容器 —— map/multimap 用法详解

    C++ STL容器 -- map/multimap 用法详解 写在前面:近期正在学习C++的STL容器,因此在这里做一下日志记录,主要介绍一些容器基本成员函数的用法, 配上实际用例,并不涉及原理.但别 ...

  2. STL 中map的用法详解

    STL 中map的用法详解 Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可 ...

  3. STL中map和string, vector 用法详解

    1. map 用法详解 std map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成 ...

  4. C++/C--unordered_map常见用法详解

    文章目录 1. std::unordered_map 的定义与特性 2. 构造 std::unordered_map 3. 赋值操作 4. 迭代器操作 4.1 指向整个容器中的元素 4.2 指向某个桶 ...

  5. C++/C--set常见用法详解【转载】

    1 概念 set是一个内部自动有序且不含重复元素的容器,其实现自动去重按升序排序.使用set,需要添加头文件:#include <set>.可以通过迭代器*it来访问set里面的元素,但是 ...

  6. C++中的unordered_map用法详解

    1 简介 unordered_map是一个将key和value关联起来的容器,它可以高效的根据单个key值查找对应的value. key值应该是唯一的,key和value的数据类型可以不相同. uno ...

  7. C++中的unordered_map常见用法详解

    文章目录 1. std::unordered_map 的定义与特性 2. 构造 std::unordered_map 3. 赋值操作 4. 迭代器操作 4.1 指向整个容器中的元素 4.2 指向某个桶 ...

  8. python argv 详解_Python3 sys.argv[ ]用法详解

    sys.argv[]说白了就是一个从程序外部获取参数的桥梁,这个"外部"很关键,因为我们从外部取得的参数可以是多个,所以获得的是一个列表(list),也就是说sys.argv其实可 ...

  9. oracle中的exists 和 not exists 用法详解

    from:http://blog.sina.com.cn/s/blog_601d1ce30100cyrb.html oracle中的exists 和 not exists 用法详解 (2009-05- ...

最新文章

  1. 关于SSL配置的报告
  2. 160个Crackme013之投机取巧
  3. 静态代理和动态的本质区别
  4. 学计算机去大工中大,厦门大学和大连理工大学你 选哪个?哪个好。厦门大学和东南大学、天津大学、武汉大学、中山大学去那个...
  5. SAP 电商云 Spartacus UI Proxy Facade 的一个实际例子
  6. leetcode1219. 黄金矿工(回溯)
  7. 27-1/x+1/y=1/n
  8. 【老孙随笔】怎样才能当上项目经理?
  9. Sql 查询库、表、列名的语句
  10. mongodb 导出txt_MongoDB导出软件
  11. 仓储管理之计价方法——月末一次加权平均法
  12. matlab绘制奈奎图,matlab画奈奎斯特图
  13. 贴片钽电容耐压不符会导致爆炸
  14. 亲测好用的Topaz AI图像降噪软件:DeNoise AI mac版(支持m1)
  15. 360云盘修改存储目录技巧
  16. win7批量修改计算机名,文件批量改名助手
  17. GraphicsLab Project之基于物理的着色系统(Physical based shading)-直接光照
  18. 对话政企CIO:融合对企业网络通信的新意义
  19. Android O(SDK 8.0)新特性,刘海屏
  20. python 读取csv某一列_Python 读取csv的某列

热门文章

  1. 三冲IPO,亨达海天能否敲开美股上市大门?
  2. 华为手机关闭云空间之类的通知的方法
  3. PowerShell 运行ps1文件
  4. c语言浮点数内存存储解析和浮点数(double、float)如何定义NaN、正无穷(inf)、负无穷(-inf),以及如何判断是否是NaN
  5. spring cloud系列一:Cloud Native Applications
  6. 某厂向用户提供饲料matlab,Matlab习题
  7. 编写一个程序,从键盘输入半径和高,输出圆柱体的底面积和体积。
  8. 暑期小学生计算机培训班,青岛小学生学习编程暑假
  9. ChatGPT4 的体验 一站式 AI工具箱 -—Poe(使用教程)
  10. Competition4_t3