C++ pair 和 tuple

本文详细介绍了C++中的pair和tuple两种数据结构,包括它们的用途、初始化方式以及支持的操作。pair常用于函数返回两个值,而tuple则可以返回多个值。文章还列举了pair和tuple的各种操作,如成员访问、关系运算及元素获取,并提供了示例代码展示如何使用make_pair和make_tuple。此外,还强调了两者成员的访问方式和比较规则。
摘要由CSDN通过智能技术生成

目录

1、pair 

2、tuple


1、pair 

pair的一个常见用途是从一个函数返回2个值。

注: map的元素是pair。

pair支持的操作(头文件:utility)
pair<T1,T2> pp是一个pair,两个类型分别为T1和T2的成员都进行初始化
pair<T1,T2> p<v1,v2>p是一个成员类型为T1和T2的pair,first和second的成员分别用v1和v2进行初始化
pair<T1,T2> p={v1,v2}等价于p<v1,v2>
make_pair(v1,v2)返回一个用v1和v2初始化的pair。pair的类型从v1和v2的类型推断出来
p.first返回p的名为first的(公有)数据成员
p.second返回p的名为second的(公有)数据成员
p1 relop p2关系运算符(<、>、<=、>=)按字典序定义
p1==p2当first和second成员分别相等时,两个pair相等。相等性判断利用元素的==运算符实现
p1!=p2

2、tuple

tuple的一个常见用途是从一个函数返回多个值。

tuple支持的操作(头文件:tuple)
tuple<T1,T2,...Tn> tt是一个tuple,成员数为n,第i个成员的类型为Ti。所有成员都进行值初始化。
tuple<T1,T2,...Tn> t(v1,v2,...,vn)

t是一个tuple,成员类型为T1...Tn,每个成员用对应的初始值vi进行初始化。

注:此构造函数是explicit的。

make_tuple(v1,v2,...,vn)返回一个用给定初始值初始化的tuple,tuple的类型从初始值的类型推断
t1==t2当两个tuple具有相同数量的成员且成员对应相等时,两个tuple相等。这两个操作使用成员的==运算符来完成。
t1!=t2
t1 repop t2

tuple的关系运算使用字典序。

注:两个tuple必须具有相同数量的成员。

get<i> (t)

返回t的第i个数据成员的引用;如果t是一个左值,结果是一个左值的引用;否则,结果是一个右值引用。

注:tuple的所有成员都是public的。

tuple_size<tupleType>::Value一个类模板,可以通过一个tuple类型来初始化。它有一个名为value的public constexpr static数据成员,类型为size_t,表示给定tuple类型中成员的数量。
tuple_element<i,tupleType>::type一个类模板,可以通过一个整形常量和一个tuple类型来初始化。它有一个名为type的public成员,表示给定tuple类型中指定成员的类型。

如果不知道一个tuple准确的类型细节信息,可以用两个辅助类模板来查询tuple成员的数量和类型:

auto item = make_tuple("hello",10,20.0);

typedef decltype(item) im;
size_t sz = tuple_size<im>::value;
tuple_element<1,im>::type cnt = get<1>(item)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值