C++标准库 -- tuple
头文件:<tuple>
可访问属性:
无(用get方法来访问数据)
可访问方法:
| swap(tuple) | 和另外一个tuple交换值 |
其他相关方法:
| swap(t1, t2) | 交换两个tuple |
| make_tuple(v1,v2..) | 创建一个tuple |
| get<?>(tuple) | 访问数据 |
| tie(v1, v2..) | 创建由reference构成的tuple |
例子:
例子1:构造tuple
tuple<int, float, string> t0;
tuple<, 2.0, "three");
auto t2 = make_tuple(, , "asdf", 3.2);
tuple<, "kaima")); //use pair to init tuple
auto t4 = t1;
tuple<, "John");
例子2:访问数据
tuple<, 2.0, "three");
cout << >(t1) << >(t1) << >(t1) << endl;
例子3:关系比较
tuple<, 2.0, "three");
tuple<, 1.0, "kaima");
if(t1 > t2) // >= < <= == !=
cout << "t1 > t2" << endl;
例子4:交换值
swap(t1, t2);
t1.swap(t2);
例子5:reference构成的tuple
string s = "Hello";
tuple<string&> t1(s);
>(t1) = "t1";
cout << s << endl; //t1
auto t2 = make_tuple(ref(s));
>(t2) = "t2";
cout << s << endl; //t2
auto t3 = tie(s);
>(t3) = "t3";
cout << s << endl; //t3
其他:
(1)“接受不定个数的实参”的构造函数被声明为explicit。
(2)元素个数:tuple_size<tupleType>::value
(3)第idx个元素的类型:tuple_element<idx, tupleType>::type
(4)连接tuple:tuple_cat(t1, t2..)
额外:
使用以下代码可以直接cout一个tuple。
template <int IDX, int MAX, typename... Args>
struct PRINT_TUPLE {
static void print(ostream& strm, const tuple<Args...>& t) {
strm << ==MAX ? "" : ",");
PRINT_TUPLE<IDX+, MAX, Args...>::print(strm, t); //recursion
}
};
//end the recursion
template <int MAX, typename... Args>
struct PRINT_TUPLE<MAX, MAX, Args...> {
static void print(ostream& strm, const tuple<Args...>& t) {
//null
}
};
template <typename... Args>
std::ostream& operator << (ostream& strm, const tuple<Args...>& t) {
strm << "[";
PRINT_TUPLE<, sizeof...(Args), Args...>::print(strm, t);
return strm << "]";
}
C++标准库 -- tuple的更多相关文章
- STL标准库-Tuple
技术在于交流.沟通,本文为博主原创文章转载请注明出处并保持作品的完整性 在前面我介绍过一次tuple,今天在书上也看到了tuple,那就在写一次吧. tuple(元组),他的内部可以放任意类型的变量( ...
- C/C++基础----标准库几个工具库tuple,bitset,正则表达式,随机数,IO库
tuple tuple可以有任意多个成员 默认初始化,值初始化 构造函数是explicit,必须直接初始化 make_tuple(v1,v2,-,vn) get<i> (t) 返回第i个数 ...
- Python标准库13 循环器 (itertools)
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在循环对象和函数对象中,我们了解了循环器(iterator)的功能.循环器是对象的 ...
- 【循序渐进学Python】11.常用标准库
安装完Python之后,我们也同时获得了强大的Python标准库,通过使用这些标准库可以为我们节省大量的时间.这里是一些常用标准库的简单说明.更多的标准库的说明,可以参考Python文档 sys 模块 ...
- Boost程序库完全开发指南——深入C++“准”标准库(第3版)
内容简介 · · · · · · Boost 是一个功能强大.构造精巧.跨平台.开源并且完全免费的C++程序库,有着“C++‘准’标准库”的美誉. Boost 由C++标准委员会部分成员所设立的Bo ...
- 读书笔记 effective c++ Item 54 让你自己熟悉包括TR1在内的标准库
1. C++0x的历史渊源 C++标准——也就是定义语言的文档和程序库——在1998被批准.在2003年,一个小的“修复bug”版本被发布.然而标准委员会仍然在继续他们的工作,一个“2.0版本”的C+ ...
- python 标准库 -- subprocess
subprocess 主要功能室执行外部的命令和程序 一个进程可 fork 一个子进程, 并让这个子进程 exec 另外一个程序. 在 python 中, 可以通过标准库中的 subprocess 包 ...
- C++相关:部分标准库特殊设施
C++ tuple(元组) tuple是C++11新标准里的类型.它是一个类似pair类型的模板.pair类型是每个成员变量各自可以是任意类型,但是只能有俩个成员,而tuple与pair不同的是它可以 ...
- collections标准库
collections标准库 之前Python的第三方库用的一直很舒服,现在突然发现标准库也有collections这样的神器,可以补充list.set.dict以外的应用 1. namedtuple ...
随机推荐
- jQuery如何判断元素是否是隐藏的?
jQuery函数简介: is(expr) 用一个表达式来检查当前选择的元素集合,如果其中至少有一个元素符合这个给定的表达式就返回true. 如果没有元素符合,或者表达式无效,都返回'false'. 注 ...
- 《征服 C 指针》摘录5:函数形参 和 空的下标运算符[]
一.函数的形参的声明 C 语言可以像下面这样声明函数的形参: void func(int a[]) { // ... } 对于这种写法,无论怎么看都好像要向函数的参数传递数组. 可是,在 C ...
- 【Android学习】解决Eclipse AVD打开慢的问题
1.创建的时候勾选“Snapshot” 2.之后Start时候勾选对应的.
- ASP.NET Core--条件处理程序中的依赖注入
翻译如下: 在配置期间(使用依赖注入),授权处理程序必须在服务集合中注册. 假设您有一个在授权处理程序中要解析规则的仓储库,并且该仓储库已在服务集合中注册. 授权将在构造函数还原并注入. 例如,如果你 ...
- DPM算法源程序voc-release5在Windows中的配置修改过程
最近的<视频处理与分析>课程中有一个大作业,是有关DPM物体检测算法的.网上有DPM的源代码,但是原版只能在Linux或Mac上运行,而我的电脑是Windows系统,于是在网上搜了一下在怎 ...
- 时下手机和p2p理财的共同点
1, 雨后春笋,百家争鸣:一会听说这个又做手机了,一会听说哪哪哪又搞了个P2P. 2, 性价比高的都得靠抢:手机配置高价格低的要抢:p2p利率高时间短的要抢. 3, 竞争惨烈:手机千元机各种血拼:P2 ...
- JavaScript刷新页面n种方法
window.location.href 属性 window.location.href=window.location.href;//刷新当前页面 asp.net 或 asp 利用此功能刷新页面 R ...
- python——连接MySQL数据库
都是照着说明文档来的,主要是为了以后忘记了能快一点想起来. 1. 连接 安装MySQL的时候,自动按照了Python的模块,如果没有的话,也可以在官网下载. 看什么都不如看代码来得快: import ...
- CSS初始化样式
为什么要初始化CSS? CSS初始化是指重设浏览器的样式.不同的浏览器默认的样式可能不尽相同,所以开发时的第一件事可能就是如何把它们统一.如果没对CSS初始化往往会出现浏览器之间的页面差异.每次新开发 ...
- volatile关键字详解
本文系转载,原文链接:http://www.cnblogs.com/Chase/archive/2010/07/05/1771700.html,如有侵权,请联系我:534624117@qq.com 引 ...