tuple

tuple是一个异质数据集合,是pair的扩展,支持任意数量元素。
tuple是TR1引入的,由于当时语言不支持不定参模板,所以最初的tuple元素个数是有限的。C++11引入不定参模板后,tuple得到重新实现。

tuple支持下列操作:

函数作用
tuple<T1,T2,…,Tn> t默认构造函数
tuple<T1,T2,…,Tn> t(v1,v2,…,vn)构造函数,以给定值完成初始化
tuple<T1, T2> t§构造函数,以pair的元素值完成初始化
t = t2赋值操作
t = p用pair对tuple进行赋值
==、!=、<、>、<=、>=比较操作
t1.swap(t2)交换t1,t2数据
swap(t1, t2)交换t1,t2数据
make_tuple以传参构造tuple对象并返回
tie(ref1, ref2, …)生成一个由引用构成的tuple,返回左值
get<>()获取指定元素
tuple_size<>::value元素个数
tuple_element<>::type元素类型
tuple_cat()拼接tuple

tuple的拷贝构造函数、赋值运算符和pair一样,支持移动语义和隐式类型转换。

get<>()

tuple不是普通的容器,元素的类型是不确定的。为了进行编译期类型检查,get函数被声明为模板,模板传参指定了索引值,是值类型。所以调用时模板实参必须是编译期可以确定的数值。值得注意的是,get返回成员变量的引用,可以对其进行赋值更新:

std::tuple<int> t(1);
get<0>(t);			// OK
get<0>(t) = 2;		// OK

int i = 0;
get<i>(t);			// error

tie<>()

tie使用变量的引用生成tuple对象,并返回其引用,所以可以利用tie提取tuple对象的元素:

int i, j;
std::tuple<int,int> t(1, 2);

std::tie(i, j) = t;			// 提取两个元素
std::tie(std::ignore, j) = t;	// 忽略第一个元素,提取第二个元素

辅助函数

tuple_size<tupletype>::value;				// 可获得元素个数。 
tuple_element<idx,tupletype>::type;		// 可取得第idx个元素的类型(也就是get()返回值的类型)。·
tuple_cat();								// 可将多个tuple串接成一个tuple。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值