C 的Pair用法分类整理(精)
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用法分类整理(精)相关推荐
- c语言pair的用法,C++ pair的基本用法总结整理
1,pair的应用 pair是将2个数据组合成一组数据,当需要这样的需求时就可以使用pair,如stl中的map就是将key和value放在一起来保存.另一个应用是,当一个函数需要返回2个数据的时候, ...
- 2019年文章精选,分类整理,顺带聊几句时间观念
写在前面 首先,祝大家新年快乐,在国人的情结里,现在才是真正的年底,估计现在好多朋友已经陆续回家过节去了,祝回家的路顺风.过年回去就好好陪伴家人,不要看一些毒瘤号写的,过年时间弯道超越别人,趁着假期学 ...
- 20222023年文章分类整理
文章目录 2023 Gradle相关 Java相关 View相关 其他 2022 JetPack系列 Kotlin相关 View相关 多线程相关 存储相关 Gradle相关 动画相关 其他 2022 ...
- [分类整理IV]微软等100题系列V0.1版:字符串+数组面试题集锦
微软等100题系列V1.0版整理IV:字符串+数组面试题集锦 July 2010年12月30日 第4章 字符串+数组面试题 在微软等100题系列V0.1版中,此类字符串+数组的问题,占了足足22道 ...
- matlab i型级联filter,Matlab中filter,conv,impz用法(最新整理)
<Matlab中filter,conv,impz用法(最新整理)>由会员分享,可在线阅读,更多相关<Matlab中filter,conv,impz用法(最新整理)(5页珍藏版)> ...
- 把Python的200个标准库分类整理了下,供参考
Python有一套很有用的标准库(standard library),会随着Python解释器一起安装在你的电脑中的.它是Python的一个组成部分,不需要额外安装即可直接调用.这些标准库是Pytho ...
- boost::fusion::pair用法的测试程序
boost::fusion::pair用法的测试程序 实现功能 C++实现代码 实现功能 boost::fusion::pair用法的测试程序 C++实现代码 #include <boost/c ...
- php 数组合并_PHP数组常用函数分类整理
微信公众号:PHP在线 PHP数组常用函数分类整理 一.数组操作的基本函数 数组的键名和值array_values($arr); 获得数组的值array_keys($arr); 获得数组的键名arra ...
- 【Android Studio】分类整理res/Layouts中的布局文件(创建子目录)
好吧,这个功能需求也是因为作为一个重度强迫症患者,非常想要把layouts中的文件分类整理下.否则看到一堆Activity和Fragment等文件混在一起特别难受.更重要的原因是,如果你的工程交给别人 ...
最新文章
- 无需额外数据,首次实现ImageNet 87.1% 精度,颜水成团队开源VOLO
- Python做文本挖掘的情感极性分析
- Synchronize锁继承
- powershell如何编程C语言,如何用C语言执行powershell命令
- python统计窗口函数怎么处理_python时间序列:移动窗口函数前篇
- Class_fileAndroid应用调用方法
- olap 多维分析_OLAP(在线分析处理)| OLAP多维数据集和操作
- python语言中包含的标准数据类型_Python标准数据类型
- 怎么打开/查看MySQL的SQL记录
- Linux命令学习笔记之 network NetworkManager
- Jetson TX1开发笔记(三):开发利器-Nsight Eclipse Edition
- 计算机pcu,pcu(veh与pcu有啥区别)
- Android音乐播放器的比较。
- 3D游戏建模教程:Maya如何隐藏灯光
- H5网页链接APP浏览器跳转小程序-邪少外链
- Android应用程序如何进行系统签名
- 算法度量方法——时间复杂度及空间复杂度
- 9.10 安卓常用工具类之一 定位-----LocationUtils
- 初生牛犊:Windows下Anti-sandboxes技术探究
- GPS从入门到放弃(七) --- GPS卫星位置解算
热门文章
- [Leedcode][JAVA][第146题][LRU][哈希表][双向链表]
- CodeForces 895 B. XK Segments 二分查找
- The 2014 ACM-ICPC BeiJing D - Dire Wolf HDU - 5115 区间dp
- HDU 6168 Numbers 思维
- java aac rtp封装_分享一段H264视频和AAC音频的RTP封包代码
- Please remove usages of `jcenter()` Maven repository from your build scripts and migrate your build
- 华为h22h05服务器做raid_华为V5服务器 RAID控制卡(LSI SAS3008IR)
- RT-Thread I2C设备驱动框架的对接使用
- for循环延时_单片机的独立按键学习,实现60秒循环数字的启动暂停与清零
- java 对话框 显示图片_Java对话框上显示图片