c++ tuple类型

个人笔记
了解tuple:
- tuple是模板,tuple所有成员都是public的
- 使用tuple的相关操作,需要包含头文件tuple。
- 希望将数据组合成单一对象时,使用tuple非常有用。(快而随意的数据结构)
- 一个tuple可以有任意数量的成员,tuple的成员类型也不相同。
- 一个确定的tuple类型的成员数目是固定的,意味着不能有添加和删除能够改变成员数目的操作。

定义和初始化tuple:
1.当我们定义一个tuple时,需要指出每个成员的类型。创建tuple对象时,可以使用tuple的默认构造函数,该默认构造函数对每个成员进行 值初始化

tuple<int float size_t> threet; 

2.初始化tuple:tuple的构造函数是 explicit 的,因此必须使用 直接初始化

tuple<size_t,siez_t> tup={1,2,3};//错误
tuple<string,vector<double>,int,list<int>> someVal("tuple",{2.14,3.15},100,{1,2,3})//正确
tuple<int,int,double> some{2,3,3.15};//这样也行,注意与上面的括号

3.make_tuple函数:用来生成tuple对象,用初始值的类型推断tuple类型

auto itme=make_tuple("string",3,20.01);
//item的类型为tuple<const char*,int,double>

访问tuple的成员
1.get标准库模板:为了使用get获取tuple的成员,我们必须指定一个 显示模板实参(在<>里,<>里面的值必须是 常量表达式),表示访问第几个成员。还需要传递给get一个tuple对象,返回指定成员的 引用
get(m):m如果是一个左值,该表达式返回左值引用,否则是一个右值引用

auto itme = make_tuple("string", 3, 20.01);
auto book = get<1>(itme);//返回tuple对象item的第二个成员,从0开始计数

2.类模板tuple_size:查询tuple成员数量。使用tuple_size需要知道tuple对象类型(确定一个对象类型使用 decltyple),tuple_size有一个public static的数据成员value,表示给定tuple中的成员数量。

auto itme = make_tuple("string", 3, 20.01);
auto sz = tuple_size<decltype(itme)>::value;//sz为3

3.类模板tuple_element:查询tuple成员的类型。tuple_element接受一个索引(从0开始)和一个tuple对象类型。tuple_element有一个public的成员type,表示给定tuple类型中指定成员的类型

auto itme = make_tuple("string", 3, 20.01);
tuple_element<1, decltype(itme)>::type ctype;//ctype的类型为int

关系和相等运算符
条件:只有2个tuple具有相同数量的成员,才可以比较。比较时,每对成员必须是合法的,简单来说就是2个tuple成员类型应该相同。
高级用法:从函数返回多个值。由于tuple定义了<和==运算符,因此还可以将tuple序列传递给算法,并且可以在无序容器中将tuple作为关键字类型。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值