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

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>>

最新文章

  1. Oracle实例和服务知识点
  2. angular-scope.assign
  3. python核心编程学习记录之数字
  4. How Tomcat Works(十六)
  5. 用CSV文件读写数据的两种方式(转)
  6. SQL中取当前记录的ID-----&gt;SCOPE_IDENTITY()
  7. Request.url用法
  8. Eclipse扩展安装插件方式
  9. C# 汉语转拼音
  10. C语言第二次作业——顺序结构
  11. IOS常用第三方库《转》
  12. Ansible入门篇:playbook的使用
  13. 日常开发自己遇到异常(BUG未完待续!!!)
  14. php下kafka实践
  15. sonar——&quot;entrySet()&quot; should be iterated when both the key and value are needed
  16. 10款基于jquery的web前端动画特效
  17. Log4J2用法
  18. 爬虫之验证码IP攻防心得——小总结
  19. 从零开始学Kotlin-数据类型(2)
  20. 图像bayer格式介绍以及bayer插值原理CFA

热门文章

  1. Ubuntu&amp;Linux系统出现文件系统只读Read-only file system 的快速解决方法
  2. docker基本用法和命令
  3. 【分库分表】sharding-jdbc—解决的问题
  4. MVC readioButtonList的创作过程及运用
  5. 一道C++练习题,替换一个字符串里所有实例
  6. JavaScript校验网址
  7. 简单的Sqlite使用方法
  8. [P1860]新魔法药水
  9. ng2 quickstart
  10. windows系统下简单node.js环境配置 安装