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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/441801.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql创建数据库没有默认值报错_详解Mysql数据库date, datetime类型设置0000-00-00默认值(default)报错问题...

现象:MySQL5.7版本之后,date, datetime类型设置默认值"0000-00-00",出现异常:Invalid default value for time原因:在命令行窗口查看当前的sql_mode配置:select sql_mode;结果如下:ONLY_FULL_GROUP_BY, STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE,ERROR_FO…

计算机专业英语霍洪涛出版社,计算机专业英语(霍洪涛)课件Chapter 4.ppt

计算机专业英语(霍洪涛)课件Chapter 4谢谢 * Chapter 4 Operating System Review 前驱&#xff0c;前任 后继&#xff0c;继任 常见的 足够的 有时&#xff1b;在某种情况下 不局限于 目录&#xff0c;存货清单 支付、支出 伪码 * predecessor successor commonplace not limit…

【HDU - 2102】A计划 (麻烦一点的bfs)

题干&#xff1a; 可怜的公主在一次次被魔王掳走一次次被骑士们救回来之后&#xff0c;而今&#xff0c;不幸的她再一次面临生命的考验。魔王已经发出消息说将在T时刻吃掉公主&#xff0c;因为他听信谣言说吃公主的肉也能长生不老。年迈的国王正是心急如焚&#xff0c;告招天下…

ubuntu cpp与mysql连接_linux(ubuntu)下C++访问mysql数据库

向表中插入(删除)一条数据 #include #include using namespace std;int main(int argc, char* argv[]){//准备mysql的访问结构MYSQL mysql;mysql_init( &mysql );mysql_real_connect(&mysql,"192.168.16.114",//要访问数据库的IP地址"root",//用户…

渤海船舶职业学院计算机应用公司,渤海船舶职业学院

2016年招生章程已经公布&#xff0c;出国留学网高考网为大家提供2016年渤海船舶职业学院招生章程已公布&#xff0c;更多高考招生信息请关注我们网站的更新!渤海船舶职业学院2016年招生章程一、学校自然情况说明学校全称&#xff1a;渤海船舶职业学院办学地点及校址&#xff1a…

C++手动开启O2优化(以及-O -O1 -O2 -O3优化的知识点)(竞赛可用)

O1优化会消耗少多的编译时间&#xff0c;它主要对代码的分支&#xff0c;常量以及表达式等进行优化。 O2会尝试更多的寄存器级的优化以及指令级的优化&#xff0c;它会在编译期间占用更多的内存和编译时间。 O3在O2的基础上进行更多的优化&#xff0c;例如使用伪寄存器网络&a…

nginx pdo_mysql_lnmp环境,安装PHP7的扩展pdo_mysql报错的问题?

环境信息&#xff1a;centos7.4 php7.2 mysql5.71.php是编译安装的2.MySQL是用rpm安装的mysql-community-client-5.7.23-1.el7.x86_64.rpmmysql-community-common-5.7.23-1.el7.x86_64.rpmmysql-community-devel-5.7.23-1.el7.x86_64.rpmmysql-community-embedded-5.7.23-1.el7…

【qduoj - 1010】easy problem(巧妙的枚举)

题干&#xff1a; 给你一个数字N&#xff0c;N的范围是1~1000000&#xff0c;求一个最小的正整数M&#xff0c;这个数字M的各个位的数字加上它本身之和恰好为N。当然&#xff0c;如果没有解&#xff0c;输出0。 输入 输入数据由多组数据组成&#xff0c;每行由一个数字N组成…

电大mysql实验作业_成教作业网提供国开电大 MySQl数据库应用 实验训练4答案

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼实验训练4&#xff1a;数据库系统维护实验目的&#xff1a;基于实验1创建的汽车用品网上商城&#xff0c;练习创建用户、权限管理&#xff0c;数据库备份与恢复方法&#xff0c;数据导出导入的方法&#xff0c;体会数据库系统维护的…

小学教师计算机国培培训总结,小学教师国培培训心得体会

短暂而又漫长的国培结束了&#xff0c;在这三个月里&#xff0c;收获很大&#xff0c;但最大的收获是思想的转变&#xff0c;此次培训活动安排分三个阶段&#xff1a;第一阶段&#xff0c;理论学习(1 0天);第二阶段&#xff0c;教学实践 (基地学习50天);第三阶段&#xff0c;集…

【qduoj - 1012】反转数字(模拟,水题)

题干&#xff1a; 反转数字 描述 输入一个 c 语言 4字节 int 范围内的数字&#xff0c;输出它反转后的数字。比如12345反转后是54321&#xff0c;-12345反转后是-54321。如果反转后的数字不在 int 范围内就输出0&#xff1b; 输入 每行一个 int 范围内的数字&#xff0c;以 …

mysql group 条件_mysql 的group by 满足的规则要求:

版权声明&#xff1a;本文为博主原创文章&#xff0c;遵循 CC 4.0 BY-SA 版权协议&#xff0c;转载请附上原文出处链接和本声明。本文链接&#xff1a;https://blog.csdn.net/u011066470/article/details/97291377————————————————GROUP BY满足的规则:所有sele…

计算机网络技术局域网作业,计算机网络作业局域网搭建注意事项.ppt

计算机网络作业局域网搭建注意事项计算机网络基础与应用技术 第6章 局域网技术 6.1 局域网概述 6.1.1 局域网的定义与特点 6.1.1 局域网的定义与特点 6.1.2 局域网的组建模式 6.1.2 局域网的组建模式 6.1.2 局域网的组建模式 6.1.2 局域网的组建模式 6.1.3 组建对等网 6.1.3 组…

【qduoj - 1011】数组中出现最多的元素(巧妙方法 或 排序 或 map)

题干&#xff1a; 描述 给你一个数组&#xff0c;输出里面出现超过1/2的元素。保证有且只有一个解。 输入 第一行是一个整数&#xff0c;表示测试数据的组数 n&#xff0c;n < 1000万 之后每一行都是一个整数。 输出 输出出现超过1/2的那个数字。 输入样例 1 5 1 1 …

centos mysql 5.6 源码_Centos7环境中mysql-5.6.39 源码安装

1、编译安装MySQL需要一些必备的组件&#xff0c;可以直接使用yum安装即可yum -y install cmake ncurses-devel gcc-c2 创建 Mysql用户useradd mysql3 分别给mysql创建程序安装目录和数据存储目录&#xff0c;这里将mysql安装在/opt下&#xff0c;数据存储在 /data/mysql下mkdi…

2019年9月全国计算机等级考试报名,关于2019年9月全国计算机等级考试报名的通知...

关于2019年9月全国计算机等级考试报名的通知2019年9月全国计算机等级考试报名工作即将开始&#xff0c;根据教育部考试中心和安徽省教育招生考试院的要求&#xff0c;学生在网上报名及缴费。现将2019年9月全国计算机等级考试报名工作安排如下&#xff1a;一、网上报名时间2019年…

【ACM算法讲堂之 - 计算几何基础】:【点积和叉积】(附一些模板)

计算几何是算法竞赛的一大块&#xff0c;而叉积是计算机和的基础。 首先叉积是计算说向量之间的叉积&#xff0c;那么我们可以这样定义向量&#xff0c;以及向量的运算符重载。 struct Point {double x,y;Point(double x0,double y0):x(x),y(y) {} }; typedef Point Vector; V…

mysql libstdc .so.6_编译安装mysql报错 ./mysqld: /usr/lib64/libstdc++.so.6:

我遇到这个问题的时候是在连接库的时候出现的问题&#xff0c;而且不是在编译的时候出现的&#xff0c;实在运行的时候才 报错&#xff0c;出现这种问题就是因为编译库的编译器和编译当前程序的编译器版本是不一样的&#xff0c;在具体一点就是因为&#xff0c;当前程序的编译器…

极限脱出 量子计算机,《极限脱出3:零时困境》难点解密攻略 剧情通关密码一览...

《极限脱出3&#xff1a;零时困境》这款解密游戏很多时候会卡住&#xff0c;如何通关呢&#xff1f;下面小编就给大家分享一下《极限脱出3&#xff1a;零时困境》中几个难点解密&#xff0c;需要过关密码的朋友可以收藏一下哦。游戏过程中经常会卡在三处&#xff1a;1.玩家发现…

【qduoj】C语言课程设计_约瑟夫问题

题干&#xff1a; 描述 有n只猴子&#xff0c;按顺时针方向围成一圈选大王&#xff08;编号从1到n&#xff09;&#xff0c;从第1号开始报数&#xff0c;一直数到m&#xff0c;数到m的猴子退出圈外&#xff0c;剩下的猴子再接着从1开始报数。就这样&#xff0c;直到圈内只剩下…