博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++通用工具:pair和tuple
阅读量:5154 次
发布时间:2019-06-13

本文共 2322 字,大约阅读时间需要 7 分钟。

pair

class pair可将两个value视为一个单元。C++标准库内多处都用到了这个class,比如容器map,multimap,unordered_map等,任何函数如果需要返回两个value,也需要用到pair,比如minmax()等。

class pair的完整功能定义于头文件

#include
namespace std{    template 
struct pair { T1 first; T2 second; ... };}

由上述定义,我们不难得出,pair的所有成员都是public的,所以pair提供了直接访问数据成员的能力。

pair操作函数

pair
p //default构造函数,建立一个函数,其元素类型分别t1和t2,各自以default函数初始化pair
p(val1,val2) //建立一个pair,元素类型分别为t1和t2,以val1和val2为初值pair
p(piecewise_construct,val1,val2); //建立一个pair,元素类型分别为tuple t1和t2,以tuple val1和val2为初值pair
p(p2) //copy构造函数,建立p成为p2的拷贝p=p2 //将p2的值赋给pp.first //获得pair内的第一valuep.second //获得pair内的第二valueget<0>(p) //等价于p.firstget<1>(p) //等价于p.secondp1.swap(p2) //互换p1和p2的数据make_pair
//返回一个pair,带有val1和val2的类型和数值。

注意,pair在进行比较操作时,第一元素具有较高比较级,只有在第一元素相等时,才会去比较第二元素。

tuple

tuple又叫元组,它扩展了pair的概念,拥有任意数量的元素。tuple呈现出一个异质元素列,其中每个类型都可以用来被指定。

tuple最初沿用的是C++98的标准,默认建议是至少10个实参,又累赘又限制,后来到C++11,tuple得到了极大的优化,才有了现在的class tuple

#include
namespace std{ template
class tuple;}

tuple的操作

原则上,tuple的接口十分直观

tuple
t //以n个给定类型的元素建立一个tuple,以各元素类型得到default构造函数完成初始化,基础类型的初值为0tuple
t(v1,v2,...,vn) //以n个给定类型的元素建立一个tuple,以给定值完成初始化t=t2 //将t2赋值给tt.swap(t2) //互换t1和t2的数据make_tuple(v1,v2,...) //以传入的所有数据和类型建立一个tuple,并允许由此tuple提取数值

tuple的读入输出

#include
#include
#include
using namespace std;int main(){ tuple
t; get<0>(t)="Hello"; get<1>(t)="World"; get<2>(t)=" !"; get<3>(t)=2019; cout<
<0>(t)<<" "<
<1>(t)<
<2>(t)<<" "<
<3>(t); return 0;}

get<num>(typename tuple)里,num对应元素编号,以0开始,()内是tuple的名称,注意,tuple不可在编译期进行赋值。

转载于:https://www.cnblogs.com/cloudplankroader/p/10460396.html

你可能感兴趣的文章
hadoop06---多线程
查看>>
IBM、HPUX、Solaris不同之处
查看>>
Img2Lcd
查看>>
H3C的DHCP中继配置命令
查看>>
shell脚本之批量添加用户
查看>>
正式版SVN服务器安装记录
查看>>
bzoj3510 首都
查看>>
Hibernate整合C3P0实现连接池
查看>>
52. N-Queens II
查看>>
CS231n assignment2 Q3 Dropout
查看>>
Vue.js前后端同构方案之准备篇——代码优化
查看>>
SPOJ DIVISION - Divisiblity by 3
查看>>
关于用C#实现宽带的连接
查看>>
codevs 3369 膜拜
查看>>
Python网络编程笔记一
查看>>
配置Sublime Text2的python运行环境(Sublime Text 3也类似)
查看>>
SQL (FMDB)
查看>>
eclipse 常用设置(一)
查看>>
springmvc 注解总结
查看>>
FTL指令常用标签及语法
查看>>