C++ tuple 的使用说明
c++中的tuple是一个允许存放多种不同的数据类型的容器,是针对pair的泛型,和pair一样在std 的namespace中,在使用的时候,需要引用头文件,同时注意namespace;
可用函数
和tuple相关的一共有四个函数,下面分别对其进行介绍
1. make_tuple
创建并初始化tuple
auto tup = std::make_tuple("liu","yi","jiang","is",6,1,9);
该代码创建的tuple 对应类型如下,
tuple<const char*, char*, char*, char*, int, int, int>
不难看出tuple中并不要求元素的类型相同,同时可以支持多个元素。
需要注意的是,tuple变量中的元素数量,在创建完成后就是固定不变的,不能增加或减少。
2.tie
分而取之,获取tuple中的单个元素
auto tup = std::make_tuple('l',6,2.33); char a; int b; double c; std:tie(a,b,c) = tup; std::cout<<"a="<<a<<" "<<"b="<<b<<" "<<"c="<<c<<endl;
程序的输出结果为a=l b=6 c=2.33
如果不想取某一位的值,可以使用ingore代替:
auto tup = std::make_tuple('l',6,2.33); char a; double c; std:tie(a,ingore,c) = tup; std::cout<<"a="<<a<<" "<<"c="<<c<<endl;
程序的输出结果为a=l c=2.33
3.forward_as_tuple
用于接收右值引用数据生成tuple
auto tup = std::forward_as_tuple(1,"csdn")
上述代码创建了一个tuple<int &&, char (&)[6]>类型的元组。
可以看出,tuple中的参数全部为右值引用。而前面讨论的tie函数就只能接受左
4.tuple_cat
用于连接tuple
std::tuple<float, string> tup1(3.14, "pi"); std::tuple<int, char> tup2(10, 'a'); auto tup3 = tuple_cat(tup1, tup2);
tuple中对元素的操作
1.get < i >
获取第i个元素的值
std::tuple<float, string> tup(666, "emmmm"); cout << get<0>(tup);
输入第一个元素666.
2.tuple_element
获取tuple中特定元素数据结构
std::tuple_element<0, decltype(tup1)>::type
3.size
获取tuple中的元素个数
std::tuple<float, string> tup(666, "emmmm"); cout << tuple_size<decltype(tup1)>::value;
输出结果为2