tuple:是一个固定大小的不同类型值的集合,是泛化的pair,类似于结构体。pair只能保存两个元素,而tuple理论上可以保存任意类型不同的元素。tuple从c++11开始引入。
一:特点
1.tuple不支持迭代,只能通过元素索引或者std::tie拆包后获取元素的值;且给定索引必须在编译期就给定,不能在运行期给,否则引发编译错误,如下
tuplet(1, 'a', 2.0, "jj"); for (int i = 0; i < 3; i++) { cout << get(t) << endl; //将引发编译错误 } cout << get<0>(t) << endl;//正确的方式
2.tuple的元素类型可以是引用类型。
二:tuple的定义与初始化
tuplet1; tuple t2(1, 'a', 2.0, "jj"); string str; tuple t3(str, 12); auto t4 = make_tuple(1, 'a', 2.0, "jj"); get<0>(t3) = "ssss"; cout << str << endl;//str输出为"ssss"
三:基本操作
1.获取tuple元素个数
int cnt = tuple_size::value;//cnt为4
2.获取tuple元素值
//通过get获取 cout<< get<0>(t2) << endl;//输出1 //tie解包 int n; char c; double d; string s; tie(n, c, d, s) = t2; cout << n <<";" << c << ";" << d << ";" << s << endl;//输出1;a;2;jj
3.获取tuple元素类型
tuple_element<0, decltype(t2)>::type;
4.ignore占位
tie(n, ignore, ignore, s) = t2; cout << n <<";" << s << endl;//输出1;jj
5.c++4新特性:增加元素类型获取元素值
cout << get(t2) << endl;//输出2 //如果多个值类型一致则不适用 auto t5 = make_tuple(1, 2, "aa"); cout << get (t5) << endl;//引发编译期错误



