C++ pair详解

pair

pair在cplusplus 与C++Primer中的介绍


在这里插入图片描述


首先可以看到pair是一个class template —类模板 pair也是一种模板类型
对 pair 的介绍是:

这个类将一对值耦合在一起,这些值可能是不同类型的(T1T2)。单个值可以通过其公共成员firstsecond访问。
pair是元组的一种特殊情况。
所谓的元组就是:元组是能够容纳元素集合的对象。每个元素可以是不同的类型。

头文件: <utility>


模板参数:

在这里插入图片描述
两个参数 :
1 T1 first 成员变量的类型
2.T2 second 成员变量的类型

注意 pair只是一个模板类型 因此其参数是两个参数的类型T1,T2;

成员变量

在这里插入图片描述
两个成员变量:

1.first pair对象中的第一个值
2.second pair对象中的第二个值

pair的常见操作

在这里插入图片描述

1.pair对象的创建与初始化

格式:pair<T1,T2> p1;
例:

#include<utility>
using namespace std;
int main()
{pair<int,int> p1;//创建一个空的pair对象 //两个元素分别是int 和int 类型//采用值初始化return 0;
}

这里的初始化是采用该类型的默认值进行初始化 比如 int 类型的默认初始值是0 而string 类型默认是一个空字符串:

2. pair对象成员变量的访问

使用 " . " 操作符对pair类对象 可以直接访问其数据成员 其成员都是公有的 分别命名为 first 和sccond

  1. p.first 返回 p 中的 first 公有数据成员
  2. p.first 返回 p 中的 fsecond 公有数据成员
	pair<int, int> p1;pair<string, string> s1;cout << p1.first << " " << p1.second << endl;cout << "_" << s1.first <<"-"<< s1.second << endl;

默认初始化结果:
在这里插入图片描述
创建并初始化:
格式:pair<T1,T2> p1(v1,v2);

	pair<int, int> p1(1,3);pair<string, string> s1("hello","world");cout << p1.first << " " << p1.second << endl;cout << "_" << s1.first <<"-"<< s1.second << endl;

在这里插入图片描述

注意这里的赋值初始化必须两个参数类型与模板参数类型相同,也就是v1的类型必须和T1相同 v2的类型必须和T2相同。

pair运算符:
1.赋值:" = "

除了上面的 pair<T1,T2> p1(v1,v2); 这样在创建时初始化也可以使用 “=” 进行赋值达到对成员 first second 的赋值;

int main()
{pair<int, int>p1;p1.first = 12;p1.second = 13;cout << p1.first <<" "<< p1.second << endl;return 0;
}

在这里插入图片描述

2.比较 " < "

// p1 < p2 两个 pair 对象之间的小于运算 比较的次序是
// 如果 p1.first<p2.first 或者
// (p1.first<p2.first)&&(p1.second<p2.second) 时 p1<p2 才返回true

int main()
{pair<int, int>p1(1, 0);pair<int, int>p2(1, 0);if (p1<p2)cout << "true" << endl;elsecout << "false" << endl;return 0;
}

在这里插入图片描述

3.判断是否相等 " == "
//	如果两个pair对象的first和second 成员依次相等 则这两个对象相等
//	该运算使用其元素 == 操作符
//	if (p1 == p2)
//	{
//		cout << "true" << endl;
//	}
4. Swap

可以交换两个 pair 对象的 first 和second 成员变量 但是前提是所交换的成员变量的类型必须相同

使用方法: p1.swap(p2);

int main()
{pair<int, string>p1(1, "hello");pair<int, string>p2(12,"world");p1.swap(p2);cout << p1.first << " " << p1.second << endl;cout << p2.first << " " << p2.second << endl;return 0;
}

在这里插入图片描述

make_pair 生成新的pair对象

除构造函数 标准库还定义了一个make_pair函数 由传递给他的两个实参生成一个新的pair对象 可如下使用该函数创建的pair对象,并赋值给已经存在的pair对象。

int main()
{pair<string, string> S;string s1, s2;cin >> s1 >> s2;{S = make_pair(s1, s2);//等价于//S = pair<string, string>(s1,s2);}cout << S.first << " "<<S.second << endl;return 0;
}

在这里插入图片描述

注意: 尽量传入的参数的类型与pair 对象的T1 T2 相同 或者经过一下的隐式类型转换 否则将不能完成赋值。

int main()
{pair<int,int> S;S = make_pair(10.3, 'a');//这里也是可以的 对<double,char> 隐式转换cout << S.first << " "<<S.second << endl;return 0;
}

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

聊聊OpenStack运维架构

前言 想一想&#xff0c;从事OpenStack杂七杂八的事儿&#xff0c;至今正好三年半了。做过QA测试&#xff08;手动的、自动的&#xff09;、CI&#xff08;gerrit、jenkins、gitlab、harbor&#xff09;、云产品封装&#xff08;从系统pxe到openstack代码&#xff09;、自动化…

Lua pairs与ipairs效率分析

介于大家目前有些人比较关心 lua table中pairs 和 ipairs的效率问题, 特此研究了一下... 如有不正 还需指出.. 首先来看下 lua中table的结构定义: table中分为2个存储空间, 一个是线性数组空间(TValue *array), 和一个hash空间(Node *node) 当我们使用 pairs 和 ipairs 会产生…

【机器学习|数学基础】Mathematics for Machine Learning系列之矩阵理论(22):方阵函数在微分方程组中的应用

目录 前言往期文章5.6 方阵函数在微分方程组中的应用5.6.1 解一阶线性常系数齐次微分方程组5.6.2 解一阶线性常系数非齐次微分方程组 结语 前言 Hello&#xff01;小伙伴&#xff01; 非常感谢您阅读海轰的文章&#xff0c;倘若文中有错误的地方&#xff0c;欢迎您指出&#xf…

C++中pair使用详细说明

一、pair 的介绍 pair 是一个很实用的 "小玩意"&#xff0c;当想要将两个元素绑在一起作为一个合成元素、又不想要因此定义结构体时&#xff0c;使用 pair 可以很方便地作为一个代替品。 也就是说&#xff0c;pair 实际上可以看作一个内部有两个元素的结构体&#xf…

Solidity实现默克尔树 Merkle Tree

​​Merkle Tree​​​&#xff0c;也叫默克尔树或哈希树&#xff0c;是区块链的底层加密技术&#xff0c;被BTC和Ethereum区块链广泛采用。​​Merkle Tree​​​是一种自下而上构建的加密树&#xff0c;每个叶子是对应数据的哈希&#xff0c;而每个非叶子为它的​​2​​个子…

论文浅尝 | PairRE: 通过成对的关系向量实现知识图谱嵌入

笔记整理&#xff1a;黎洲波&#xff0c;浙江大学硕士&#xff0c;研究方向为自然语言处理、知识图谱。 研究背景 知识图谱因其在问答、语义解析和命名实体消歧等任务取得了良好的效果而受到广泛关注&#xff0c;而大部分知识图谱都存在不全和缺失实体链接的问题&#xff0c;所…

致敬乔布斯的经典,锤子坚果Pro成2017年最受欢迎手机看罗永浩怎么说

锤子坚果Pro发布已经近2个月&#xff0c;但热度依旧不减。在刚刚过去的京东618活动中&#xff0c;坚果Pro在1500到2000元档位产品中一举斩获单品销量冠军。坚果Pro凭借出色的销售战绩坐实2017手机圈“黑马”之名&#xff0c;而其销量节节攀升&#xff0c;这其中必有一番原因。日…

坚果Pro 2安抚了不少人锤粉, 但用户更期待锤子T3

今年秋季&#xff0c;锤子科技创始人罗永浩于2017年11月7日在成都发布坚果系列2代手机坚果Pro 2&#xff0c;指纹和logo的融合增强了手机的一体型。软件上的再度优化&#xff0c;帮助盲人更注重人文关怀&#xff0c;再从罗永浩自带“流量”&#xff0c;坚果Pro2自然而然受到大家…

pro坚果android耗流量,深度使用坚果Pro3一个月,憋了一肚子话,不吐不快​

原标题&#xff1a;深度使用坚果Pro3一个月&#xff0c;憋了一肚子话&#xff0c;不吐不快​ 罗永浩创办的锤子手机曾经在国内手机市场&#xff0c;也是一枚耀眼的新兴&#xff0c;罗永浩对于手机工业设计的高标准严要求让锤子手机成为了国内少有的在设计上能和苹果三星比肩的手…

厉害了!原来这些文艺明星都喜欢锤子坚果Pro

最近在手机圈出现了一匹黑马&#xff0c;那就是锤子坚果Pro。在京东618期间取得了十分骄人的战果&#xff0c;荣获6月1日至18日1500-1999元价位档单品销量第一&#xff0c;成为该价格区间最受欢迎的手机&#xff0c;同时在2017年4月1日后首发的新品销量排名中位列第三&#xff…

锤子t1android驱动,锤子T1痛失安卓5.1!都是因为这?

现如今很多高端手机都开始升级安卓6.0了&#xff0c;但是情怀锤子却突然给了老用户一“锤子”&#xff0c;宣布第一代T1将不会升级到安卓5.1&#xff0c;因为“优化效果不明显”。 这顿时引发了一片争议。有的T1用户表示了理解&#xff0c;称手机够用就好&#xff0c;不在乎系统…

内蒙古大学计算机考研资料汇总

内蒙古大学研招网 内蒙古大学计算机学院 内蒙古大学计算机学院成立于1997年&#xff0c;其前身是1978年设置的计算机专业和1988年成立的计算机科学系。内蒙古大学软件学院成立于2005年&#xff0c;与计算机学院为一个实体&#xff0c;两个牌子。目前学院由计算机科学系、…

如何获取bainu文档并用斡仑office进行编码转换-永中office蒙文版

声明&#xff1a; 1.bainu软件是由内蒙古卓嘎信息技术有限公司研发的。 2.斡仑office是由内蒙古斡仑科技有限公司与永中软件股份有限公司联合开发的蒙汉多文种跨平台办公套装。 第一&#xff0c;首先我们打开bainu软件&#xff0c;如图&#xff1a; 第二&#xff0c;下列图中…

为什么 Mixin 被认为是有害的

为什么 Mixin 被认为是有害的 Mixin 是在 Vue 2 中引入的&#xff0c;作为组件之间共享代码的解决方案&#xff0c;这种方式成为许多代码库不可或缺的一部分。然而&#xff0c;随着时间的推移&#xff0c;它们的使用开始出现问题。尽管 mixins 最初很有吸引力&#xff0c;但现…

【从零开始学习JAVA | 第四十五篇】反射

目录 前言&#xff1a; ​反射&#xff1a; 使用反射的步骤&#xff1a; 1.获取阶段&#xff1a; 2.使用阶段&#xff1a; 反射的应用场景&#xff1a; 使用反射的优缺点&#xff1a; 总结&#xff1a; 前言&#xff1a; Java中的反射是一项强大而灵活的功能&#xff0…

1688采源宝的商家靠谱吗 怎么入驻成为阿里采源宝商家

说到采源宝&#xff0c;我想很多微商都是不陌生的&#xff0c;采源宝的主要作用就是方便微商查看并转发供应商所发布的商品&#xff0c;并在有客户下单时&#xff0c;还可以轻松向供货商去下单。但也有很多朋友对采源宝的商家靠谱吗这个问题存在很大疑惑&#xff0c;下面我们就…

开发nft数字藏品平台合法合规吗?

开发nft数字产品平台合法合规吗&#xff1f;这是很多人都在问的问题&#xff0c;那么今天就来给大家说说。 开发nft数字产品平台可以肯定的是合法合规。 其实很多人对国内国外的玩法不太了解&#xff0c;有很多人对数字产品法律和政策不太清楚。首先&#xff0c;我们要了解国内…

最近发现一款拍卖转拍,玩家互动挑选自己想要的拍品,转拍获利,还可以提货的源码,一款购物和赚钱的不二选择

拍卖转拍,玩家互动挑选自己想要的拍品,转拍获利,还可以提货,一款购物和赚钱的不二选择操作步骤打开拍卖首页 根据时间点击进入指定的场次选作品&#xff0c; 等待到时间准备抢拍, 抢完之后可以查看卖家的收款码, 确认打款之后可以上传支付截图 然后可以等待卖家确认收货, …

1688按图搜索商品(拍立淘)获取数据的教程

onebound.1688.item_search_img 获取key和secret API文档说明 完整返回数据 "items": { "real_total_results": 80, "error": "", "item": [ { "title"…

基于java SSM框架的竞拍系统拍卖网设计

今天给大家介绍一个竞拍网的设计与实现。 本项目主要实现的功能是为广大的消费者群体与商家之间提供网络交易的平台&#xff0c;实现该平台的创建需要实现一系列的功能。 商品信息发布的功能&#xff0c;商家发布自己产品的相关信息&#xff1b;注册登录功能&#xff0c;游客通…