Warning: WP_Syntax::substituteToken(): Argument #1 ($match) must be passed by reference, value given in /www/wwwroot/fawdlstty.com/wp-content/plugins/wp-syntax/wp-syntax.php on line 383
这种类型可以简单理解为:不需要typedef的自定义结构体类型。有时候需要传递、返回一些结构体类型,但其他地方根本用不上这种结构体,那么就不必用typedef了,可以避免公开一些内部结构体名称,更加符合软件工程思想,另外还能少些一大堆代码。
同时,STL中的结构体map中,需要用到的类型std::pair,就可以将其理解为std::tuple
废话不多说,上代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #include <iostream> #include <tuple> using namespace std; int main (int argc, char* argv []) { //打包一个tuple tuple<int, int, char> c = make_tuple (1, 5, 'c'); //结构体大小 cout << sizeof (c) << endl;//结构体大小,结果为12 //获取tuple中的某个元素 cout << get<1> (c) << endl;//获取第1个元素(从0开始),值为5 //tie解包,ignore为忽略 int a, b; tie (a, b, ignore) = c;//此时a、b的值分别为1、5 cout << a << '\t' << b << endl; return 0; } |
同时,这种随意的数据类型也有自定义结构体的特性,比如传参或返回时,直接传递即为拷贝,通过指针或右值可以减小拷贝开销;另外,tuple也能嵌套使用,使用方法大同小异。