1 pair的应用

pair是将2个数据组合成一个数据,当需要这样的需求时就可以使用pair,如stl中的map就是将key和value放在一起来保存。另一个应用是,当一个函数需要返回2个数据的时候,可以选择pair。 pair的实现是一个结构体,主要的两个成员变量是first second 因为是使用struct不是class,所以可以直接使用pair的成员变量。

2 make_pair函数

template pair make_pair(T1 a, T2 b) { return pair(a, b); }

很明显,我们可以使用pair的构造函数也可以使用make_pair来生成我们需要的pair。 一般make_pair都使用在需要pair做参数的位置,可以直接调用make_pair生成pair对象很方便,代码也很清晰。 另一个使用的方面就是pair可以接受隐式的类型转换,这样可以获得更高的灵活度。灵活度也带来了一些问题如:

std::pair<int, float>(1, 1.1);

std::make_pair(1, 1.1);

是不同的,第一个就是float,而第2个会自己匹配成double。

类模板:template <class T1, class T2> struct pair

参数:T1是第一个值的数据类型,T2是第二个值的数据类型。

功能:pair将一对值组合成一个值,这一对值可以具有不同的数据类型(T1和T2),两个值可以分别用pair的两个公有函数first和second访问。

具体用法:

1.定义(构造):

1 pair<int, double> p1; //使用默认构造函数2 pair<int, double> p2(1, 2.4); //用给定值初始化3 pair<int, double> p3(p2); //拷贝构造函数
1 pair<int, double> p1; //使用默认构造函数
2 p1.first = 1;3 p1.second = 2.5;4 cout << p1.first << ' ' << p1.second << endl;

(1)利用make_pair:

1 pair<int, double> p1;
2 p1 = make_pair(1, 1.2);

(2)变量间赋值:

pair<int, double> p1(1, 1.2);

pair<int, double> p2 = p1;

Pair类型概述
    pair是一种模板类型,其中包含两个数据值,两个数据的类型可以不同,基本的定义如下:
    pair<int, string> a;
    表示a中有两个类型,第一个元素是int型的,第二个元素是string类型的,如果创建pair的时候没有对其进行初始化,则调用默认构造函数对其初始化。
    pair<string, string> a("James", "Joy");
    也可以像上面一样在定义的时候直接对其初始化。
    由于pair类型的使用比较繁琐,因为如果要定义多个形同的pair类型的时候,可以时候typedef简化声明:
    typedef pair<string, string> author;
    author pro("May", "Lily");
    author joye("James", "Joyce");
Pair对象的操作
    对于pair类,由于它只有两个元素,分别名为first和second,因此直接使用普通的点操作符即可访问其成员生成新的pair对象
    pair<string, string> a("Lily", "Poly"); 
    string name;
    name = pair.second;
    可以使用make_pair对已存在的两个数据构造一个新的pair类型:
    int a = 8;
    string m = "James";
    pair<int, string> newone;
    newone = make_pair(a, m);

转自https://blog.csdn.net/zhuangtongy/article/details/80264064

C 的Pair用法分类整理(精)相关推荐

  1. c语言pair的用法,C++ pair的基本用法总结整理

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

  2. 2019年文章精选,分类整理,顺带聊几句时间观念

    写在前面 首先,祝大家新年快乐,在国人的情结里,现在才是真正的年底,估计现在好多朋友已经陆续回家过节去了,祝回家的路顺风.过年回去就好好陪伴家人,不要看一些毒瘤号写的,过年时间弯道超越别人,趁着假期学 ...

  3. 20222023年文章分类整理

    文章目录 2023 Gradle相关 Java相关 View相关 其他 2022 JetPack系列 Kotlin相关 View相关 多线程相关 存储相关 Gradle相关 动画相关 其他 2022 ...

  4. [分类整理IV]微软等100题系列V0.1版:字符串+数组面试题集锦

    微软等100题系列V1.0版整理IV:字符串+数组面试题集锦 July   2010年12月30日 第4章 字符串+数组面试题 在微软等100题系列V0.1版中,此类字符串+数组的问题,占了足足22道 ...

  5. matlab i型级联filter,Matlab中filter,conv,impz用法(最新整理)

    <Matlab中filter,conv,impz用法(最新整理)>由会员分享,可在线阅读,更多相关<Matlab中filter,conv,impz用法(最新整理)(5页珍藏版)> ...

  6. 把Python的200个标准库分类整理了下,供参考

    Python有一套很有用的标准库(standard library),会随着Python解释器一起安装在你的电脑中的.它是Python的一个组成部分,不需要额外安装即可直接调用.这些标准库是Pytho ...

  7. boost::fusion::pair用法的测试程序

    boost::fusion::pair用法的测试程序 实现功能 C++实现代码 实现功能 boost::fusion::pair用法的测试程序 C++实现代码 #include <boost/c ...

  8. php 数组合并_PHP数组常用函数分类整理

    微信公众号:PHP在线 PHP数组常用函数分类整理 一.数组操作的基本函数 数组的键名和值array_values($arr); 获得数组的值array_keys($arr); 获得数组的键名arra ...

  9. 【Android Studio】分类整理res/Layouts中的布局文件(创建子目录)

    好吧,这个功能需求也是因为作为一个重度强迫症患者,非常想要把layouts中的文件分类整理下.否则看到一堆Activity和Fragment等文件混在一起特别难受.更重要的原因是,如果你的工程交给别人 ...

最新文章

  1. 无需额外数据,首次实现ImageNet 87.1% 精度,颜水成团队开源VOLO
  2. Python做文本挖掘的情感极性分析
  3. Synchronize锁继承
  4. powershell如何编程C语言,如何用C语言执行powershell命令
  5. python统计窗口函数怎么处理_python时间序列:移动窗口函数前篇
  6. Class_fileAndroid应用调用方法
  7. olap 多维分析_OLAP(在线分析处理)| OLAP多维数据集和操作
  8. python语言中包含的标准数据类型_Python标准数据类型
  9. 怎么打开/查看MySQL的SQL记录
  10. Linux命令学习笔记之 network NetworkManager
  11. Jetson TX1开发笔记(三):开发利器-Nsight Eclipse Edition
  12. 计算机pcu,pcu(veh与pcu有啥区别)
  13. Android音乐播放器的比较。
  14. 3D游戏建模教程:Maya如何隐藏灯光
  15. H5网页链接APP浏览器跳转小程序-邪少外链
  16. Android应用程序如何进行系统签名
  17. 算法度量方法——时间复杂度及空间复杂度
  18. 9.10 安卓常用工具类之一 定位-----LocationUtils
  19. 初生牛犊:Windows下Anti-sandboxes技术探究
  20. GPS从入门到放弃(七) --- GPS卫星位置解算

热门文章

  1. [Leedcode][JAVA][第146题][LRU][哈希表][双向链表]
  2. CodeForces 895 B. XK Segments 二分查找
  3. The 2014 ACM-ICPC BeiJing D - Dire Wolf HDU - 5115 区间dp
  4. HDU 6168 Numbers 思维
  5. java aac rtp封装_分享一段H264视频和AAC音频的RTP封包代码
  6. Please remove usages of `jcenter()` Maven repository from your build scripts and migrate your build
  7. 华为h22h05服务器做raid_华为V5服务器 RAID控制卡(LSI SAS3008IR)
  8. RT-Thread I2C设备驱动框架的对接使用
  9. for循环延时_单片机的独立按键学习,实现60秒循环数字的启动暂停与清零
  10. java 对话框 显示图片_Java对话框上显示图片