概述

  • pair可以将两个数据组合成一种数据类型。
  • C++标准库中凡是必须返回两个值的函数都使用pair。
  • pair有两个成员变量,分别是first和second,由于使用的struct而不是class,因此可以直接访问pair的成员变量。

基本用法

pair<T1, T2> p1;           //创建一个空的pair对象(使用默认构造),它的两个元素分别是T1和T2类型,采用值初始化。
pair<T1, T2> p1(v1, v2);   //创建一个pair对象,它的两个元素分别是T1和T2类型,其中first成员初始化为v1,second成员初始化为v2。
make_pair(v1, v2);         // 以v1和v2的值创建一个新的pair对象,其元素类型分别是v1和v2的类型。
p1 < p2;                   // 两个pair对象间的小于运算,其定义遵循字典次序:如 p1.first < p2.first 或者 !(p2.first < p1.first) && (p1.second < p2.second) 则返回true。
p1 == p2;                 // 如果两个对象的first和second依次相等,则这两个对象相等;该运算使用元素的==操作符。
p1.first;                  // 返回对象p1中名为first的公有数据成员
p1.second;                 // 返回对象p1中名为second的公有数据成员
get<0>(p1);                // 等价于p1.first;(始自C++11)
get<0>(p1);                // 等价于p1.second;(始自C++11)
tuple_size<pair<int, float>>::value   // 获取pair<int, float>的元素个数
tuple_element<0, pair<int, float>>::type // 获取指定元素的数据类型

pair的创建和初始化

声明:

pair<string, string> anon;        // 创建一个空对象anon,两个元素类型都是string
pair<string, int> word_count;     // 创建一个空对象 word_count, 两个元素类型分别是string和int类型
pair<string, vector<int> > line;  // 创建一个空对象line,两个元素类型分别是string和vector类型

初始化:

pair<int, double> p1(1, 1.2);
pair<int, double> p2 = p1;     // 拷贝构造初始化
pair<int, double> p3(p1);      // 拷贝构造初始化

访问pair的两个元素:

#include <iostream>
using namespace std;
int main()
{pair<int, int> p1;p1.first = 1;p1.second = 2;cout << p1.first << ' ' << p1.second << endl;pair<int, int> p2 = make_pair(3, 4);cout << get<0>(p2) << ' ' << get<1>(p2) << endl;return 0;
}

输出:

1 2
3 4

参考

https://www.cnblogs.com/Sunrises/p/10363394.html

https://blog.csdn.net/sevenjoin/article/details/81937695

C++11中pair的用法相关推荐

  1. C++中pair的用法

    C++中pair的用法 一.概述 pair是将2个数据组合成一个数据,当需要这样的需求时就可以使用pair,如STL中的map就是将key和value放在一起来保存.另一个应用是,当一个函数需要返回2 ...

  2. C++/C++11中std::string用法汇总

    C++/C++11中std::string是个模板类,它是一个标准库.使用string类型必须首先包含<string>头文件.作为标准库的一部分,string定义在命名空间std中. st ...

  3. C++/C++11中std::set用法汇总

    一个容器就是一些特定类型对象的集合.顺序容器(sequential container)为程序员提供了控制元素存储和访问顺序的能力.这种顺序不依赖于元素的值,而是与元素加入容器时的位置相对应.与之相对 ...

  4. C++11中enable_shared_from_this的用法解析

    什么是 enable_shared_from_this? 下面摘自 cpp reference 中概述 C++11 开始支持 enable_shared_from_this,它是一个模板类,定义在头文 ...

  5. C++11中=delete的巧妙用法

    C++11中,当我们定义一个类的成员函数时,如果后面使用"=delete"去修饰,那么就表示这个函数被定义为deleted,也就意味着这个成员函数不能再被调用,否则就会出错. #i ...

  6. C语言中task的用法,C++11中std::packaged_task的使用详解

    C++11中的std::packaged_task是个模板类.std::packaged_task包装任何可调用目标(函数.lambda表达式.bind表达式.函数对象)以便它可以被异步调用.它的返回 ...

  7. C++/C++11中头文件functional的使用

    <functional>是C++标准库中的一个头文件,定义了C++标准中多个用于表示函数对象(function object)的类模板,包括算法操作.比较操作.逻辑操作:以及用于绑定函数对 ...

  8. C++/C++11中用于定义类型别名的两种方法:typedef和using

    类型别名(type alias)是一个名字,它是某种类型的同义词.使用类型别名有很多好处,它让复杂的类型名字变得简单明了.易于理解和使用,还有助于程序员清楚地知道使用该类型的真实目的.在C++中,任何 ...

  9. C++11中std::condition_variable的使用

    <condition_variable>是C++标准程序库中的一个头文件,定义了C++11标准中的一些用于并发编程时表示条件变量的类与方法等. 条件变量是并发程序设计中的一种控制结构.多个 ...

最新文章

  1. Java 数据类型转换
  2. 边缘检测、Hough变换、轮廓提取、种子填充、轮廓跟踪
  3. MPB:湖南农大尹杰组-猪粪便来源乳酸菌分离技术
  4. java solr 实现_Java实现全文检索-Solr后台管理
  5. vue 给标签添加data属性_vue之data属性
  6. jar包不统一也会报错:Exception in thread main java.lang.NoClassDefFoundError
  7. 我们凭什么相信 5G 很安全?
  8. 白银TD盈亏计算实例介绍
  9. click Setuptools Integration
  10. 计算机网络之物理层基本概念
  11. Educational Codeforces Round 23 F. MEX Queries(线段树)
  12. 关于《统计学习方法》中第三章构造kd树算法中的中位数问题
  13. MySQL数据库实验
  14. 面向接口编程的一些总结
  15. python 隐含波动率_python - QuantLib XL隐含波动率 - 堆栈内存溢出
  16. 博士申请 | 南方科技大学NCC Lab刘泉影教授招收深度学习方向全奖博士生
  17. 【NOIP2015】推销员
  18. win7万能声卡驱动_驱动精灵万能网卡版下载-驱动精灵万能网卡版免费下载
  19. 吴忠军 - 养生之道 老人健康长寿的大秘诀
  20. HTML函数多个条件并列,excel if函数如何多个条件并列

热门文章

  1. 子弹朝向屏幕准星发射
  2. android 360自动更新,百度和360自动更新SDK快速集成
  3. 响铃:DR钻戒神曲有毒?谁才是品牌借势的解药?
  4. 量子计算机芯片电原理图,量子计算机新进展:量子光学芯片电路
  5. python的延时绘图_我是如何用python+小程序实现延时摄影的
  6. 对一个信号添加带限高斯白噪声 Matlab实现
  7. 基于SSM车辆维修管理系统
  8. TJOI2013 黄金矿工(01背包改)
  9. 中国IP地址告急 新网民两年后可能无法上网
  10. 重新开始 ---- 新春寄语