C++11_ tuple
2024-10-20 17:19:10
版权声明:本文为博主原创文章,未经博主允许不得转载。
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>>
最新文章
- Oracle实例和服务知识点
- angular-scope.assign
- python核心编程学习记录之数字
- How Tomcat Works(十六)
- 用CSV文件读写数据的两种方式(转)
- SQL中取当前记录的ID----->;SCOPE_IDENTITY()
- Request.url用法
- Eclipse扩展安装插件方式
- C# 汉语转拼音
- C语言第二次作业——顺序结构
- IOS常用第三方库《转》
- Ansible入门篇:playbook的使用
- 日常开发自己遇到异常(BUG未完待续!!!)
- php下kafka实践
- sonar——";entrySet()"; should be iterated when both the key and value are needed
- 10款基于jquery的web前端动画特效
- Log4J2用法
- 爬虫之验证码IP攻防心得——小总结
- 从零开始学Kotlin-数据类型(2)
- 图像bayer格式介绍以及bayer插值原理CFA