一、tuple等价于结构体
假设我们希望存储学号int
、姓名string
和城市string
的一组数据,这组数据不能使用一个vector
来存储,因为vector
只能存储同类数据。最简单的方法就是定义一个结构体:
struct info
{
int ID,
string name,
string city
};
Zhangsaninfo={1,"zhangsan","nanjing"};
Lisiinfo={2,"Lisi","Guangzhou"};
在新标准下,tuple
模板也能完成这个任务:
tuple Zhangsaninfo(1,"zhangsan","nanjing");
tuple Lisi(1,"Lisi","Guangzhou");
如果说vector是同类数据的集合,那么tuple就是可以不同类的集合。回想一下,我们不能返回多个函数值,但是可以返回一个结构体来完成相同的操作,有了tuple
模板,更是简洁的完成了这一任务。
使用之前需要增加头文件支持#include
,tuple初始化没有顺序容器这么多形式,要么默认初始化,要么每个成员都指定值。
tuple t1;//形式1:默认初始化、
tuple t2(v1,v2,...,vn);//形式2:指定值初始化
tuple t3(t2);//形式3:拷贝构造
可以借助make_tuple(v1,v2,...,vn)
完成tuple的拷贝初始化。
tuple t1=make_tuple(v1,v2,...,vn);
tuple t2={v1,v2,...,vn};//error,等号形式拷贝构造,为了完成拷贝构造将会尝试调用形式2完成拷贝构造过程,但是形式2进行了explicit声明,所以调用失败
tuple t3{v1,v2,...,vn};//ok,调用指定值初始化构造函数
三、tuple访问
get(tup);//访问tup中的第i个元素的引用,引用是左右属性取决于tup是左值还是右值
四、tuple成员数量和类型获取
因为tuple没有size成员,所以我们需要通过辅助的类模板来获取tuple成员数量:
tuple_size::value
如:
tuple info(1, "apple", 2.0);
tuple_size::value;
每一个成员的类型也可以通过:
tuple_element::type
如:
tuple_size::type;
利用新声明可以简化:
typedef decltype trans;
size_t sz=tuple_size::value;
tuple_element cnt=get(item);
四、判断
和容器类似有:== =! >= >
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?