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作为关键字类型

参考地址:https://blog.csdn.net/chayalikemei/article/details/51105630

阅读更多

没有更多推荐了,返回首页