技术在于交流、沟通,本文为博主原创文章转载请注明出处并保持作品的完整性

在前面我介绍过一次tuple,今天在书上也看到了tuple,那就在写一次吧.

tuple(元组),他的内部可以放任意类型的变量(有点类似结构体),前面介绍过它的递归继承,这次直接看基本使用吧

1.创建和取出元素

void testTuple()
{
tuple<string, int, int, complex<double>> t; tuple<int, float, string> t1(, 6.3, "nico"); auto t2 = make_tuple(,,"make_tuple"); //operator=
get<>(t1) = get<>(t2); //取出指定下标元素 get<index>(tuple)
cout << "testTuple operator=: " << get<>(t1) << endl;
}

2.比较大小 : 比较原则为,先比较元素个数,然后按其元素的比较规则比较大小(比较大小的两个tuple,所含元素类型必须相同)

    void testTupleCompare()
{
tuple<int, float, string> t1(, 6.3, "nico");
auto t2 = make_tuple(,,"make_tuple");
if(t1 < t2)
cout<< "testTupleCompare t1 < t2" << endl;
else
cout << "testTupleCompare t1 > t2" << endl;
}

3.分割元素 tie()

    void testTupleTie()
{
tuple<int, float, string> t1(, 6.3, "nico");
int a;
int b;
string str;
tie(a,b,str) = t1;
cout << "testTupleTie a="<< a << " b=" << b << " str="<< str << endl;
}

4.tuple_size和tuple_element(取出元素类型)

    void testTupleSizeAndElement()
{
tuple<int, float, string> t(, 6.2, "nico");
cout << "testTupleSizeAndElement tuple_size = " << (tuple_size<decltype(t)>::value) << endl;//取出tuple元素个数 typedef tuple_element<,decltype(t)>::type T1;;//取出tuple元素类型
typedef tuple_element<,decltype(t)>::type T2;
typedef tuple_element<,decltype(t)>::type T3; cout << "index[0] element: " << typeid(T1).name()<<endl
<< "index[1] element: " << typeid(T2).name()<< endl
<< "index[2] element: " << typeid(T3).name() << endl;
}

5.拼接tuple tuple_cat

    void testTupleCat()
{
tuple<int> t1();
auto t2 = make_tuple();
auto t3 = tuple_cat(t1,t2);
cout << __FUNCTION__ << " t3: " << get<>(t3) << " " << get<>(t3) << endl;
}

6.交换函数 swap()

    void testTupleSwap()
{
tuple<int> t1();
auto t2 = make_tuple();
t1.swap(t2);
cout << __FUNCTION__ << " t1 " << get<>(t1) << endl;
cout << __FUNCTION__ << " t2 " << get<>(t2) << endl;
}

参考侯捷<<STL源码剖析>>

STL标准库-Tuple的更多相关文章

  1. STL标准库-算法-常用算法

    技术在于交流.沟通,本文为博主原创文章转载请注明出处并保持作品的完整性 介绍11种STL标准库的算法,从这11种算法中总结一下算法的基本使用 1.accumulate() 累加 2.for_each( ...

  2. STL标准库-容器-set与multiset

    技术在于交流.沟通,转载请注明出处并保持作品的完整性. set与multiset关联容器 结构如下 set是一种关联容器,key即value,value即key.它是自动排序,排序特点依据key se ...

  3. STL标准库-容器-deque

    技术在于交流.沟通,本文为博主原创文章转载请注明出处并保持作品的完整性. deque双向开口可进可出的容器 我们知道连续内存的容器不能随意扩充,因为这样容易扩充别人那去 deque却可以,它创造了内存 ...

  4. STL标准库-容器-vector

    技术在于交流.沟通,本文为博主原创文章转载请注明出处并保持作品的完整性. 向量容器vector是一个动态数组,内存连续,它是动态分配内存,且每次扩张的原来的二倍. 他的结构如下 一 定义 vector ...

  5. STL标准库-容器-set与map

    STL标准库-容器-set与multiset C++的set https://www.cnblogs.com/LearningTheLoad/p/7456024.html STL标准库-容器-map和 ...

  6. C++STL标准库学习笔记(五)set

    前言: 在这个笔记中,我把大多数代码都加了注释,我的一些想法和注解用蓝色字体标记了出来,重点和需要关注的地方用红色字体标记了出来,这一篇后面主要都是我的记录了,为了防止大片蓝色字体出现,后面就不改蓝色 ...

  7. C++STL标准库学习笔记(三)multiset

    C++STL标准库学习笔记(三)multiset STL中的平衡二叉树数据结构 前言: 在这个笔记中,我把大多数代码都加了注释,我的一些想法和注解用蓝色字体标记了出来,重点和需要关注的地方用红色字体标 ...

  8. C++STL标准库学习笔记(二)二分查找

    二.STL中的二分查找算法 1.binary_search 2.lower_bound 3.upper_bound 记得#include<algorithm>! 前言: 在这个笔记中,我把 ...

  9. C++STL标准库学习笔记(一)sort

    前言: 近来在学习STL标准库,做一份笔记并整理好,方便自己梳理知识.以后查找,也方便他人学习,两全其美,快哉快哉! 这里我会以中国大学慕课上北京大学郭炜老师的<程序设计与算法(一)C语言程序设 ...

随机推荐

  1. BZOJ3296: [USACO2011 Open] Learning Languages 并查集

    Description 农夫约翰的N(2 <= N<=10,000)头奶牛,编号为1.. N,一共会流利地使用M(1<= M <=30,000)种语言,编号从1  .. M., ...

  2. 【旧版本】Ubuntu 14.04 下 P416编译器 p4c的安装

    注:此为2017年5月份的安装方法,最新的p4c安装方法见: Ubuntu14.04下 安装p4c 参考: p4c README Ubuntu 14.04 下 P4v16编译器 p4c的安装 系统要求 ...

  3. UVa 1626 括号序列(矩阵连乘)

    https://vjudge.net/problem/UVA-1626 题意: 输入一个由 "(" . ")" . "[" . " ...

  4. Django内置模版过滤器

    Django内置过滤器总览 可以查询下表来总览Django的内置过滤器: 过滤器 说明 add 加法 addslashes 添加斜杠 capfirst 首字母大写 center 文本居中 cut 切除 ...

  5. [原][osg][osgEarth][粒子特效]关于粒子特效库在osgEarth中,位置摆放问题,跟踪节点移动问题

    首先粒子在地球上位置摆放很简单: //传入的经纬度坐标 osg::Vec3d geoPoint; const SpatialReference* latLong = SpatialReference: ...

  6. 一个纯净的webpack4+angular5脚手架

    该篇主要是结合刚发布不久的webpack4,搭建一个非cli的angular5的脚手架demo,主要分为以下几个方面阐述下脚手架结构: # 脚手架基础架构(根据angular5的新规范) /** * ...

  7. Windows 2008 更改网卡绑定顺序

    用 ncpa.cpl 或者用鼠标右键点网上邻居进去也好. 来到网卡列表画面. 然后,你会发觉没有菜单去操作[高级设置], 这里,最高级的步骤来了, 就是你需要按一个 [Alt]把菜单给显示出来,太神奇 ...

  8. ns-3

    二.NS-3C++脚本的编写如前所述,NS-3的脚本使用C++语言(也支持python),使用四种类型的网络构件(Node.NetDevice.Channel.Application).一个简单的脚本 ...

  9. hdu1584

    蜘蛛牌 Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  10. Largest Point (2015沈阳赛区网络赛水题)

    Problem Description Given the sequence A with n integers t1,t2,⋯,tn. Given the integral coefficients ...