版权声明:本文为博主原创文章,未经博主允许不得转载。

tuple 是一个可以装载任何变量的容器,C++11的Variadic Templates给tuple的实现带来了极大方便.

tuple的实现基于递归继承,例如

std::tuple<int, float, string> t (,6.3,"nico");

结构图如下图

递归继承的优点是,将内存分配在连续片段上,这是在内存管理上非常好的做法

下面来介绍一下tuple的使用

std::tuple<int, float, string> t (,2.5,"C++");
std::cout << sizeof(t) <<std::endl; //至于为啥是 32一直没弄懂
std::cout << get<>(t) <<std::endl;
std::cout << get<>(t) <<std::endl;
std::cout << get<>(t) <<std::endl;

输出结果

sizeof(tuple) 输出tuple的参数个数

get<num>(tuple) 获取第几个元素(num)


简单的创建

//make_tuple<>
auto t1 = make_tuple(,,"zi");
std::cout << sizeof(t1) <<std::endl;
std::cout << get<>(t1) <<std::endl;
std::cout << get<>(t1) <<std::endl;
std::cout << get<>(t1) <<std::endl;

输出结果


tuple的直接赋值

//tuple的赋值
auto t1 = make_tuple(,,"zi");
get<>(t1) = get<>(t1); //直接赋值,但是要求变量类型相同
std::cout<< get<>(t1) << std::endl;

输出结果


tie()的使用

//tie 捆绑  a,b,c 捆绑在t1的三个值上
auto t1 = make_tuple(,,"zi");
int a;
int b;
string c;
tie(a,b,c) = t1;
cout << a << endl;

输出结果


重新定义

//重新定义
typedef tuple<int, float, string> TupleType;//重命名
cout << tuple_size<TupleType>::value<< endl; //输出Tuple内的元素个数
tuple_element<, TupleType> :: type f = ; //去tuple的第一个元素类型去声明变量
cout << f <<endl;
typedef tuple_element<, TupleType> :: type INT;//将Tuple的第一个元素的类型重新命名
INT g = ;
cout << g << endl;

输出结果

以上是C++11 tuple的基本使用

如有不正确的地方请指正

参照<<侯捷 C++新标准 C++11>>

C++11_ tuple的更多相关文章

  1. 【.NET深呼吸】元组数据(Tuple)

    各位观众,大家好,欢迎收看由火星电视台直播的<老周吹牛>节目,注意:本节目没有任何技术含量,如果您没有兴趣,请砸掉电视机. 今天说一下System命名空间下的一个数据类型——Tuple,翻 ...

  2. python之最强王者(7)——元组(tuple)

    1.序列(sequence): 说明:在前面的字符串列表中其实我们已经用到了序列,之所以放到这篇来讲主要是为了承上启下,方便理解和记忆. python的数据访问模型:直接存取 ,序列 ,映射 对非容器 ...

  3. tuple放入dict中

    tuple放入dict中是否可以正常运行 # 将tuple放入dict中 a = ('AI','Kobe','Yao') b = ('AI',['Kobe','Yao']) dict1 = {'a': ...

  4. list,tuple,dict,set常用方法

    Python中list,tuple,dict,set常用方法 collections模块提供的其它有用扩展类型 from collections import Counter from collect ...

  5. Python中内置数据类型list,tuple,dict,set的区别和用法

    Python中内置数据类型list,tuple,dict,set的区别和用法 Python语言简洁明了,可以用较少的代码实现同样的功能.这其中Python的四个内置数据类型功不可没,他们即是list, ...

  6. c# 元组Tuple

    Tuple类型像一个口袋,在出门前可以把所需的任何东西一股脑地放在里面.您可以将钥匙.驾驶证.便笺簿和钢笔放在口袋里,您的口袋是存放各种东西的收集箱.C# 4.0引入的一个新特性 Tuple类型与口袋 ...

  7. Python_Day_03 list,dic,tuple方法总结

    编程语言中最长见的几种数据类型,字典,列表,等.同样在Python中也有这些数据类型,只是有些表现形式不同.同时在Python中又多了一种叫做元组(tuple)的东西. list(列表) 初始化列表 ...

  8. python-list tuple dict set

    1:删除一个列表末尾的元素 pop方法 >>> a [1, 'Jack', 2, 3, 2] >>> a.pop() >>> a [1, 'Jac ...

  9. List tuple 类型转成数组

    SKlearning大部分的输入数据都是M * N数组. 然而我们从数据库或文件读取得来的通常是Python内定的类型tuple或list 它们的优势就不说了,但是直接把list或tuple构成的二维 ...

随机推荐

  1. 在VS2012中采用C++中调用DLL中的函数(4)

    转自:http://www.cnblogs.com/woshitianma/p/3683495.html 这两天因为需要用到VS2012来生成一个DLL代码,但是之前并没有用过DLL相关的内容,从昨天 ...

  2. 【c++ primer, 5e】【函数基础】

    p182~p185: 函数1.在调用函数和执行return语句的同时,也发生了控制权的转移. 2.函数返回值不能是一个数组.(但是可以返回一个包含数组的对象,或者指向数组的指针) 3.重要概念:名字的 ...

  3. CentOS的Qt3和Qt4问题

    在有的系统中,装有Qt3和Qt4, 在使用qmake生成Makefile后,直接make, 出错,说没有头文件, 如果调用了qt3的qmake,那么上头的INCPATH里的头文件路径也指向了Qt3, ...

  4. 基于Node.js的爬虫工具 – Node Crawler

    Node Crawler的目标是成为最好的node.js爬虫工具,目前已经停止维护. 我们来抓取光合新知博客tech栏目中的文章信息.访问http://dev.guanghe.tv/category/ ...

  5. 【纯代码】Swift-自定义PickerView单选(可修改分割线颜色、修改字体大小、修改字体颜色。)(可根据需要自己扩展)

    typealias PopPickerViewCallBackClosure = (_ resultStr:NSString?) -> () class PopPickerView : UIVi ...

  6. 【vim】几种模式的切换

    很多初学者启动vim后,不知道怎么输入字符:按了半天字母,结果屏幕还是空的. vim和记事本或WORD不一样,不是一打开后就可以输入文字,此时它处于正常模式. vim一共有4个模式: 正常模式 (No ...

  7. [翻译]如何在HTML5中有效使用ARIA

    ARIA是Accessible Rich Internet Application的简称,指无障碍富互联网应用.可以使一些有功能障碍(如听力,视力)的人群,使用你的网站.下面看一下做为开发人员的我们, ...

  8. centos7更改主机名

    操作环境 [root@centos701 ~]# uname Linux [root@centos701 ~]# uname -a Linux centos701 3.10.0-693.el7.x86 ...

  9. 读书笔记: Microsot .NET企业级应用架构设计

    Microsot .NET企业级应用架构设计 Dino Esposito   Andrea Saltarello 编    陈黎夫 译   人民邮电出版社 第一部分 设计原则 第1章 当代架构师和架构 ...

  10. python学习笔记(字典乱码)

    博主总结下 python中字典中包含中文时,使用过程中出现乱码 json.dumps(params, encoding="UTF-8", ensure_ascii=False) p ...