C++11_ tuple
版权声明:本文为博主原创文章,未经博主允许不得转载。
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的更多相关文章
- 【.NET深呼吸】元组数据(Tuple)
各位观众,大家好,欢迎收看由火星电视台直播的<老周吹牛>节目,注意:本节目没有任何技术含量,如果您没有兴趣,请砸掉电视机. 今天说一下System命名空间下的一个数据类型——Tuple,翻 ...
- python之最强王者(7)——元组(tuple)
1.序列(sequence): 说明:在前面的字符串列表中其实我们已经用到了序列,之所以放到这篇来讲主要是为了承上启下,方便理解和记忆. python的数据访问模型:直接存取 ,序列 ,映射 对非容器 ...
- tuple放入dict中
tuple放入dict中是否可以正常运行 # 将tuple放入dict中 a = ('AI','Kobe','Yao') b = ('AI',['Kobe','Yao']) dict1 = {'a': ...
- list,tuple,dict,set常用方法
Python中list,tuple,dict,set常用方法 collections模块提供的其它有用扩展类型 from collections import Counter from collect ...
- Python中内置数据类型list,tuple,dict,set的区别和用法
Python中内置数据类型list,tuple,dict,set的区别和用法 Python语言简洁明了,可以用较少的代码实现同样的功能.这其中Python的四个内置数据类型功不可没,他们即是list, ...
- c# 元组Tuple
Tuple类型像一个口袋,在出门前可以把所需的任何东西一股脑地放在里面.您可以将钥匙.驾驶证.便笺簿和钢笔放在口袋里,您的口袋是存放各种东西的收集箱.C# 4.0引入的一个新特性 Tuple类型与口袋 ...
- Python_Day_03 list,dic,tuple方法总结
编程语言中最长见的几种数据类型,字典,列表,等.同样在Python中也有这些数据类型,只是有些表现形式不同.同时在Python中又多了一种叫做元组(tuple)的东西. list(列表) 初始化列表 ...
- python-list tuple dict set
1:删除一个列表末尾的元素 pop方法 >>> a [1, 'Jack', 2, 3, 2] >>> a.pop() >>> a [1, 'Jac ...
- List tuple 类型转成数组
SKlearning大部分的输入数据都是M * N数组. 然而我们从数据库或文件读取得来的通常是Python内定的类型tuple或list 它们的优势就不说了,但是直接把list或tuple构成的二维 ...
随机推荐
- 在VS2012中采用C++中调用DLL中的函数(4)
转自:http://www.cnblogs.com/woshitianma/p/3683495.html 这两天因为需要用到VS2012来生成一个DLL代码,但是之前并没有用过DLL相关的内容,从昨天 ...
- 【c++ primer, 5e】【函数基础】
p182~p185: 函数1.在调用函数和执行return语句的同时,也发生了控制权的转移. 2.函数返回值不能是一个数组.(但是可以返回一个包含数组的对象,或者指向数组的指针) 3.重要概念:名字的 ...
- CentOS的Qt3和Qt4问题
在有的系统中,装有Qt3和Qt4, 在使用qmake生成Makefile后,直接make, 出错,说没有头文件, 如果调用了qt3的qmake,那么上头的INCPATH里的头文件路径也指向了Qt3, ...
- 基于Node.js的爬虫工具 – Node Crawler
Node Crawler的目标是成为最好的node.js爬虫工具,目前已经停止维护. 我们来抓取光合新知博客tech栏目中的文章信息.访问http://dev.guanghe.tv/category/ ...
- 【纯代码】Swift-自定义PickerView单选(可修改分割线颜色、修改字体大小、修改字体颜色。)(可根据需要自己扩展)
typealias PopPickerViewCallBackClosure = (_ resultStr:NSString?) -> () class PopPickerView : UIVi ...
- 【vim】几种模式的切换
很多初学者启动vim后,不知道怎么输入字符:按了半天字母,结果屏幕还是空的. vim和记事本或WORD不一样,不是一打开后就可以输入文字,此时它处于正常模式. vim一共有4个模式: 正常模式 (No ...
- [翻译]如何在HTML5中有效使用ARIA
ARIA是Accessible Rich Internet Application的简称,指无障碍富互联网应用.可以使一些有功能障碍(如听力,视力)的人群,使用你的网站.下面看一下做为开发人员的我们, ...
- centos7更改主机名
操作环境 [root@centos701 ~]# uname Linux [root@centos701 ~]# uname -a Linux centos701 3.10.0-693.el7.x86 ...
- 读书笔记: Microsot .NET企业级应用架构设计
Microsot .NET企业级应用架构设计 Dino Esposito Andrea Saltarello 编 陈黎夫 译 人民邮电出版社 第一部分 设计原则 第1章 当代架构师和架构 ...
- python学习笔记(字典乱码)
博主总结下 python中字典中包含中文时,使用过程中出现乱码 json.dumps(params, encoding="UTF-8", ensure_ascii=False) p ...