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

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. Qt 编码问题QTextCodec

    在学习计算机语言的时候, 关于字体编码问题, 一直是大家开始学习新语言比较头痛的问题, 在这边总结一下关于Qt图形框架开发的编码问题. 一般在Window开发环境里,是GBK编码,在Linux开发环境 ...

  2. MyEclipse 2014优化设置(禁用myeclipse updating indexes)

    1.指定本机java环境 Windows-->preferences-->java-->Insetallel JREs 右侧 单击ADD standard VM-->Next ...

  3. Http:设置 浏览器中MIME 类型

    http://www.163ns.com/zixun/post/4602.html 自定义MIME类型支持FLV的相关设置 网络空间支持FLV的相关设置其实很简单,就是自定义一个MIME类型 一般虚拟 ...

  4. 20145322《Java程序设计》第十周学习总结

    20145322<Java程序设计>第十周学习总结 教材学习内容总结 网络概述 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据.程序员所作的事情就是把数据发送到指定的位置,或 ...

  5. [BZOJ4016]最短路径树问题

    Description 给一个包含n个点,m条边的无向连通图.从顶点1出发,往其余所有点分别走一次并返回. 往某一个点走时,选择总长度最短的路径走.若有多条长度最短的路径,则选择经过的顶点序列字典序最 ...

  6. UVA 1642 Magical GCD(经典gcd)

    题意:给你n(n<=100000)个正整数,求一个连续子序列使序列的所有元素的最大公约数与个数乘积最大 题解:我们知道一个原理就是对于n+1个数与n个数的最大公约数要么相等,要么减小并且减小至少 ...

  7. 组合数模板 - Lucas

    2017-08-10 19:35:32 整理者:pprp 用于计算C(m,n) % p 代码如下: //lucas #include <iostream> using namespace ...

  8. Dive into Spring framework -- 了解基本原理(二)--设计模式-part1

    比较巧,自己在接触设计模式的时候,也刚开始学习spring,但可惜的是,真的仅仅在学习“用”spring,每天都沉浸在会痛快的完成spring各种配置的快乐之中,但对成长无用.其实当初就清楚,spri ...

  9. 'webpack' 不是内部或外部命令解决办法以及npm配置

    昨天在笔记本上安装webpack,按照教程下来,使用webpack命令行,报错:'webpack' 不是内部或外部命令,也不是可运行的程序 或批处理文件.网上有大量的配置方法与解决办法,找了好久才成功 ...

  10. angular指令与指令交互

    app.directive('mansory',function(){ return { controller:function($scope){ this.changed = function(){ ...