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 ...
随机推荐
- HTTP请求报文格式
HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII码串,各个字段的长度是不确定的.HTTP有两类报文:请求报文和响应报文. 请求报文 一个HTTP请求报文由请求行(request line ...
- PHP操作SQL Server 2008/2012
PHP操作SQL Server驱动,微软官方提供2个版本,Version 2.0 和 Version 3.0 Version 2.0 版本支持的操作系统有: Windows Server 2003 S ...
- jQuery解析AJAX返回的html数据时碰到的问题与解决
$.ajax({ type : "post", url : "<%=request.getContextPath()%>/ce/articledetail/m ...
- Servlet 之 GenericServlet
我们都知道javaweb中servlet的三大组件 servlet filter listener 实现动态资源的 是可以继承 Servlet接口,或者集成GenericServlet .Http ...
- 51nod1089(最长回文子串之manacher算法)
题目链接: https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1089 题意:中文题诶~ 思路: 我前面做的那道回文子串的题 ...
- win7安装Linux
1. 新建分区必须为FAT32 (不是绿色的可用分区,只要linux安装时可以识别) 大小大于8G 2.打开ISO, 把casper文件夹下的initrd.lz vmlinuz 两个文件提取到C盘下 ...
- Sublime Text3 安装markdown插件
1.打开Sublime Text,使用快捷键 ctrl+` (左上角Tab键上方,Esc键下方)或者使用菜单 View > Show Console menu,此时将出现Sublime Text ...
- JDK各个版本的新特性jdk1.5-jdk8
JDK各个版本的新特性 对于很多刚接触java语言的初学者来说,要了解一门语言,最好的方式就是要能从基础的版本进行了解,升级的过程,以及升级的新特性,这样才能循序渐进的学好一门语言.今天先为大家介绍一 ...
- Jmeter MySQL数据库性能测试
1.首先准备M一SQL数据,新建一个数据库及测试用的表,插入1条数据 2.打开Jmeter,新建线程组,设置多少用户,循环几次随意 3.在线程组下新增JDBC配置元件,通过配置使得Jmeter能够连上 ...
- cdn
cdn内容分发网络: 1. 内容缓存Web cache技术,反向代理 2. 集群服务与负载均衡技术 LVS(四层) 与 nginx(七层) 3. 全局负载均衡工作原理:基于DNS解析的GSLB实现机制 ...