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

在前面我介绍过一次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. c#传统SqlTransaction事务和TransactionScope事务

    事务有很多种,看了一些关于事务的问题,这里做下笔记····· 事务时单个的工作单位.如果某一事务成功,则在该事务中进行的所有数据更改均会提交,成为数据库中永久的组成部分.若果事务遇到错误,则必须取消或 ...

  2. VisualStudio使用技巧及快捷键

    1. 怎样调整代码排版的格式? 选择:编辑—>高级—>设置文档的格式或编辑—>高级—>设置选中代码的格式. 格式化cs代码:Ctrl+k+f 格式化aspx代码:Ctrl+k+ ...

  3. Android本地广播

    Android中使用的广播一般是系统全局广播,即发出的广播可以被其他任何应用程序接收到,并且我们也可以接收来自于其他任何应用程序的广播.这样就很容易会引起安全性的问题,比如说我们发送的一些携带关键性数 ...

  4. ubuntu14.04, keyboard shortcuts

  5. 启动tomcat一闪而过问题调试并解决

    之前一直用myelise+tomcat启动项目很正常,今天在尝试用绿色版tomcat8时,点击startup.bat文件时,一闪而过,tomcat未正常启动,也无法看到错误信息.搜索网络查找到调试方法 ...

  6. Java多线程之内存可见性和原子性:Synchronized和Volatile的比较

    Java多线程之内存可见性和原子性:Synchronized和Volatile的比较     [尊重原创,转载请注明出处]http://blog.csdn.net/guyuealian/article ...

  7. 雷林鹏分享:C# 枚举(Enum)

    C# 枚举(Enum) 枚举是一组命名整型常量.枚举类型是使用 enum 关键字声明的. C# 枚举是值数据类型.换句话说,枚举包含自己的值,且不能继承或传递继承. 声明 enum 变量 声明枚举的一 ...

  8. 雷林鹏分享:Ruby 注释

    Ruby 注释 注释是在运行时会被忽略的 Ruby 代码内的注释行.单行注释以 # 字符开始,直到该行结束,如下所示: #!/usr/bin/ruby -w # 这是一个单行注释. puts &quo ...

  9. Python处理HTML转义字符

    抓网页数据经常遇到例如>或者 这种HTML转义符,抓到字符串里很是烦人. 比方说一个从网页中抓到的字符串: html = '<abc>' 用Python可以这样处理: import ...

  10. 基础的shell脚本

    #! /bin/sha="hello world"echo "A is "   echo $a echo "<br />" ec ...