Stl标准库-Tuple
Posted 勿在浮沙筑高台
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Stl标准库-Tuple相关的知识,希望对你有一定的参考价值。
技术在于交流、沟通,本文为博主原创文章转载请注明出处并保持作品的完整性
在前面我介绍过一次tuple,今天在书上也看到了tuple,那就在写一次吧.
tuple(元组),他的内部可以放任意类型的变量(有点类似结构体),前面介绍过它的递归继承,这次直接看基本使用吧
1.创建和取出元素
void testTuple() { tuple<string, int, int, complex<double>> t; tuple<int, float, string> t1(41, 6.3, "nico"); auto t2 = make_tuple(22,44,"make_tuple"); //operator= get<1>(t1) = get<1>(t2); //取出指定下标元素 get<index>(tuple) cout << "testTuple operator=: " << get<1>(t1) << endl; }
2.比较大小 : 比较原则为,先比较元素个数,然后按其元素的比较规则比较大小(比较大小的两个tuple,所含元素类型必须相同)
void testTupleCompare() { tuple<int, float, string> t1(41, 6.3, "nico"); auto t2 = make_tuple(22,44,"make_tuple"); if(t1 < t2) cout<< "testTupleCompare t1 < t2" << endl; else cout << "testTupleCompare t1 > t2" << endl; }
3.分割元素 tie()
void testTupleTie() { tuple<int, float, string> t1(41, 6.3, "nico"); int a; int b; string str; tie(a,b,str) = t1; cout << "testTupleTie a="<< a << " b=" << b << " str="<< str << endl; }
4.tuple_size和tuple_element(取出元素类型)
void testTupleSizeAndElement() { tuple<int, float, string> t(41, 6.2, "nico"); cout << "testTupleSizeAndElement tuple_size = " << (tuple_size<decltype(t)>::value) << endl;//取出tuple元素个数 typedef tuple_element<0,decltype(t)>::type T1;;//取出tuple元素类型 typedef tuple_element<1,decltype(t)>::type T2; typedef tuple_element<2,decltype(t)>::type T3; cout << "index[0] element: " << typeid(T1).name()<<endl << "index[1] element: " << typeid(T2).name()<< endl << "index[2] element: " << typeid(T3).name() << endl; }
5.拼接tuple tuple_cat
void testTupleCat() { tuple<int> t1(41); auto t2 = make_tuple(22); auto t3 = tuple_cat(t1,t2); cout << __FUNCTION__ << " t3: " << get<0>(t3) << " " << get<1>(t3) << endl; }
6.交换函数 swap()
void testTupleSwap() { tuple<int> t1(41); auto t2 = make_tuple(22); t1.swap(t2); cout << __FUNCTION__ << " t1 " << get<0>(t1) << endl; cout << __FUNCTION__ << " t2 " << get<0>(t2) << endl; }
参考侯捷<<STL源码剖析>>
以上是关于Stl标准库-Tuple的主要内容,如果未能解决你的问题,请参考以下文章