C++中的模板类pair

目录

一、成员函数

一、构造函数

二、赋值运算符重载 operator=

三、交换函数 swap

二、非成员函数重载

一、关系运算符重载

二、交换函数 swap

三、获取数据 get 

三、See also

一、无需写类型创建pair对象 make_pair


pair是一个模板类,可以存储两个值的有序对。通常用于需要返回两个值的函数,或者作为容器(如std::map、std::set)的元素。

pair包含在头文件<utility>中

template<class T1, class T2>

struct pair {......}

一、成员函数

一、构造函数

default (1)
pair();
copy (2)
template<class U, class V> pair (const pair<U,V>& pr);
initialization (3)
pair (const first_type& a, const second_type& b);

1.默认构造 pair ()

2.拷贝构造 template<class U, class V>

                   pair (const pair<U, V>& pr)

3.有参构造 pair (const first_type& a, const second_type& b)

pair<int, int> pr1;//默认构造
pair<int, int> pr2(10, 20);//有参构造
pair<int, int> pr3(pr2);//拷贝构造

二、赋值运算符重载 operator=

copy (1)
pair& operator= (const pair& pr);

1.pair& operator= (const pair& pr)

pair<int, int> pr1(10, 20);
pair<int, int> pr2;
pr2 = pr1;//赋值运算符重载

三、交换函数 swap

void swap (pair& pr) noexcept   

noexcept关键字是用于指示函数是否抛出异常。如果一个函数使用noexcept关键字声明,并在运行时抛出异常,程序会立即终止。

pair<int, char> pr1(10, 'a');
pair<int, char> pr2(20, 'b');
pr1.swap(pr2);

二、非成员函数重载

一、关系运算符重载

(1)
template <class T1, class T2>bool operator== (const pair<T1,T2>& lhs, const pair<T1,T2>& rhs);
(2)
template <class T1, class T2>bool operator!= (const pair<T1,T2>& lhs, const pair<T1,T2>& rhs);
(3)
template <class T1, class T2>bool operator<  (const pair<T1,T2>& lhs, const pair<T1,T2>& rhs);
(4)
template <class T1, class T2>bool operator<= (const pair<T1,T2>& lhs, const pair<T1,T2>& rhs);
(5)
template <class T1, class T2>bool operator>  (const pair<T1,T2>& lhs, const pair<T1,T2>& rhs);
(6)
template <class T1, class T2>bool operator>= (const pair<T1,T2>& lhs, const pair<T1,T2>& rhs);

二、交换函数 swap

template <class T1, class T2>

void swap (pair<T1, T2>& x, pair<T1, T2>& y) noexcept

pair<int, char> pr1(10, 'a');
pair<int, char> pr2(20, 'b');
swap(pr1, pr2);

三、获取数据 get 

lvalue (1)
template <size_t I, class T1, class T2>typename tuple_element< I, pair<T1,T2> >::type&  get (pair<T1,T2>&  pr) noexcept;
rvalue (2)
template <size_t I, class T1, class T2>typename tuple_element< I, pair<T1,T2> >::type&& get (pair<T1,T2>&& pr) noexcept;
const (3)
template <size_t I, class T1, class T2>const typename tuple_element< I, pair<T1,T2> >::type&get (const pair<T1,T2>& pr) noexcept;

size_t I 值为0或1,如果I值为0,返回成员first的引用;如果I值为1,返回成员second的引用

pair<int, char> pr1(10, 'a');
get<0>(pr1) = 100;//将pr1的第一个成员修改为100
cout << get<0>(pr1) << endl;//100

三、See also

一、无需写类型创建pair对象 make_pair

template <class T1, class T2>

pair<T1, T2> make_pair (T1 x, T2 y)

当需要传入一个pair对象的参数时,使用make_pair会很方便

void func(pair<int, char> pr)
{cout << pr.first << " " << pr.second << endl;
}
void test()
{func(make_pair(10, 'a'));
}pair<int, char> pr1;
pr1 = make_pair(20, 'b');

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

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

相关文章

Jmeter测试学习笔记

第一章 jmeter基础知识 一.Jmeter工具中的组件 1.测试计划&#xff1a;Jmeter测试的起点。容器。 2.线程组&#xff1a;代表一定的用户 3.取样器&#xff1a;发送请求的最小单元 4.逻辑控制器&#xff1a;处理请求逻辑 5.前置处理器&#xff1a;请求之前的操作 6.后置处…

公网IP地址如何申请SSL证书?有免费的IP ssl吗?

如果用户没有域名或只有公网IP地址或者不方便使用域名&#xff0c;IP地址ssl证书这一特殊的证书可以为IP地址实现HTTPS的安全保护&#xff0c;提高网站数据传输的安全性。 IP地址申请SSL证书的基本步骤 IP ssl证书下载---注册填写230916https://www.joyssl.com/certificate/sel…

面经学习(上海旭千实习)

个人总结 难度中等&#xff0c;Java的基础部分有点忘了&#xff0c;还有那个token的实现流程也有点给忘了&#xff0c;项目问的比较少&#xff0c;还是要注重Java基础部分的复习。 1.jdk8和jdk7有什么区别呢&#xff1f; jdk8的新特性主要就是流式编程和lambda&#xff0c;区…

什么是Java中的JPA(Java持久化API)

Java持久化API&#xff08;Java Persistence API&#xff0c;简称JPA&#xff09;是一个用于管理Java EE和Java SE环境中关系数据的标准API。JPA是Java EE 5的一部分&#xff0c;但它也可以在Java SE环境中使用。JPA提供了一个对象关系映射&#xff08;ORM&#xff09;框架&…

都是AI的锅?越来越多海外用户抛弃谷歌,转向TikTok和Reddit搜索答案

媒体报道&#xff0c;谷歌搜索的算法已经被AI驱动的搜索引擎优化&#xff08;SEO&#xff09;垃圾邮件淹没&#xff0c;推送结果充斥低质量内容&#xff0c;甚至整个互联网都充斥着AI剽窃、生成的无价值内容。 AI大潮的到来&#xff0c;让几大科技巨头感到紧张&#xff0c;谷歌…

数据可视化(五):Pandas高级统计——函数映射、数据结构、分组聚合等问题解决,能否成为你的工作备用锦囊?

Tips&#xff1a;"分享是快乐的源泉&#x1f4a7;&#xff0c;在我的博客里&#xff0c;不仅有知识的海洋&#x1f30a;&#xff0c;还有满满的正能量加持&#x1f4aa;&#xff0c;快来和我一起分享这份快乐吧&#x1f60a;&#xff01; 喜欢我的博客的话&#xff0c;记得…

【不看后悔】AGI时代,这些工具真的能让你收入翻倍!

引言 在数字化浪潮中&#xff0c;AIGC已经成为不可或缺的一部分 无论你是一名内容创作者&#xff0c;还是简单的社交媒体用户&#xff0c;免费的AI工具都能在多个层面助你一臂之力。这些工具涵盖从文本创作到图像设计&#xff0c;再到视频制作等多个方面&#xff0c;不仅可以…

Amazon云计算AWS之[1]基础存储架构Dynamo

文章目录 Dynamo概况Dynamo架构的主要技术主要问题及解决方案Dynamo的存储节点数据均衡分布的问题一致性哈希算法改进一致性哈希算法 数据备份数据冲突问题成员资格及错误检测容错机制临时故障处理机制永久性故障处理机制 Dynamo概况 面向服务的Amazon平台基本架构为了保证其稳…

什么是嵌套路由?如何定义嵌套路由

嵌套路由是路由的一个特性&#xff0c;它允许在一个路由组件内部定义其他的路由组件。在Web前端中&#xff0c;嵌套路由的实现通常基于项目中的页面结构&#xff0c;特别是当页面由多层嵌套的组件组合而成时。嵌套路由的主要目的是在路由内部嵌套子路由&#xff0c;以便根据导航…

Java 随笔记: 面向对象编程(三)

目录 1. 类变量 2. 类方法 3. main 方法 4. 代码块 5. 单例设计模式 6. final 关键字 8. 抽象类 9. 模板设计模式 10. 接口 11. 内部类 1. 类变量 在Java中&#xff0c;类变量也被称为静态变量&#xff0c;用关键字“static”声明。类变量属于整个类&#xff0c;而不…

C语言学习/复习24---

一、指针的进阶 1.指针的类型 2.字符指针 注意事项1&#xff1a;数组名是首元素地址&#xff0c;指针变量存储地址 3.指针数组 4.数组指针 注意事项1:&数组名与数组名 案例1&#xff1a;数组地址与数组首元素地址 数组地址的使用&#xff1a; ​​​…

理解字符串常量池(JVM)

大纲 思考 如何查看字符串常量池&#xff08;StringTable&#xff09;&#xff1f; 使用 jclasslib 插件打开字节码&#xff0c;选择 常量池 -> 显示所选 -> CONSTANT_String_info&#xff0c;左侧过滤后的内容即为字符串常量池 字符串常量池、方法区、永久代和元空间的…

如何将你的iOS应用成功上架App Store(图文详解)

上架基本需求资料 1、苹果开发者账号&#xff08;如还没账号先申请- 苹果开发者账号申请教程&#xff09; 2、开发好的APP 通过本篇教程&#xff0c;可以学习到ios证书申请和打包ipa上传到appstoreconnect.apple.com进行TestFlight测试然后提交审核的完整流程&#xff01; …

草稿 | word格式的网址索引

参考文献引用 参考文献上标设置&#xff1a;&#xff08;改为上标的快捷键为ctrlshift“”&#xff09; https://jingyan.baidu.com/article/cbcede07d786c743f50b4d47.html 多个参考文献一起引用&#xff1a; https://blog.csdn.net/neptune4751/article/details/119921187 交…

如何在 Ubuntu VPS 上配置 Nginx 的日志记录和日志轮转

简介 为了避免在 Web 服务器上遇到麻烦&#xff0c;您可以配置日志记录。在服务器上记录信息可以让您访问数据&#xff0c;帮助您在出现问题时进行故障排除和评估情况。 在本教程中&#xff0c;您将了解 Nginx 的日志记录功能&#xff0c;并发现如何配置这些工具以最好地满足…

社交媒体数据恢复:与你科技

在数字时代&#xff0c;数据是我们生活中的重要组成部分。无论是个人照片、文档&#xff0c;还是企业的重要资料&#xff0c;数据在我们的生活中扮演着举足轻重的角色。然而&#xff0c;数据丢失的问题时常发生&#xff0c;给我们带来了很多麻烦。幸运的是&#xff0c;当下众多…

UE4 拍摄、保存并浏览相册

效果&#xff1a; 1.新建CameraActor类 2.修改截图保存路径 3.编写BP_Camera蓝图 注意路径 Save Image函数要在执行拍照和BeginPlay事件执行一次 按钮执行拍摄事件 3.编写UMG蓝图 技巧&#xff1a;让Index加1、减1循环赋值 4.把BP_Camera挂在玩家上

步步精科技获得发明型专利,提升Type-C连接器行业竞争力

在电子科技日新月异的时代&#xff0c;连接器作为电子设备中不可或缺的一部分&#xff0c;其安全性、稳定性和性能水平直接关系到设备的使用效果和用户体验。深圳市步步精科技有限公司&#xff08;以下简称“步步精科技”&#xff09;一直致力于连接器领域的技术创新和产品研发…

Linux-pip安装升级

安装pip3 apt 或 apt-get 包管理器 sudo apt-get install python3-pip升级pip 对应的python升级自己的pip&#xff0c;注意python指的是python的哪个版本&#xff0c;如python2.7、python3.8等。 升级命令&#xff1a; python -m pip install --upgrade pip 或 python3 -m …

Ubuntu上阅读Android源码工具

由于Android源码过于庞杂&#xff0c;里面有多种语言源文件&#xff0c;想只用一IDE统一索引是不现实的。我个人便使用AS阅读JAVA代码&#xff0c;VS看C/C代码&#xff0c;在Ubuntu上不能使用SI&#xff0c;所以直接放弃。在framework开发这个层面上来讲&#xff0c;因为大部分…