1、tuple应用:
解释:是一个元组,可包含无限多不同类型变量,pair的升级版,但没有pair得成员变量first、second。

1.1、代码:

// tuple example
#include <iostream>     // std::cout
#include <tuple>        // std::tuple, std::get, std::tie, std::ignoreint main ()
{std::tuple<int,char> foo (10,'x'); // 构造tupleauto bar = std::make_tuple ("test", 3.1, 14, 'y');std::get<2>(bar) = 100;   //通过下标获取元素int myint; char mychar;std::tie (myint, mychar) = foo;  // unpack elementsstd::tie (std::ignore, std::ignore, myint, mychar) = bar;  // unpack (with ignore)mychar = std::get<3>(bar);std::get<0>(foo) = std::get<2>(bar); //通过下标获取元素std::get<1>(foo) = mychar;std::cout << "foo contains: ";std::cout << std::get<0>(foo) << ' ';std::cout << std::get<1>(foo) << '\n';return 0;
}

用法:初始化tuple实例后,通过std::tie解包元素,利用std::ignore忽略指定元素,通过std::get获取指针位置元素。

参考资料:
1、 tuple、tie与ignore学习链接
2、C++ tuple元组的基本用法(总结)

2、std::tie用法:
解释:可以用于解包tuple元素;其构造函数返回一个元组。
代码:

1、std::tie(a,b,c) = std::tuple<int,int,double>(1,2,4.1); // 用于解包tuple
2、std::tuple<int, int, double>  pu = std::tie(a,b,c); // 创建到其参数或 std::ignore 实例的左值引用的tuple。
3、std::tie(a, b) = std::make_tuple(2, 3);

解释:
代码行1:tie用以解包元组,获取元组中元素值;
代码行2:tie构造返回的是一个元组。
用法:用于结构体大小比较:

struct S {
int n;
std::string s;
float d;
bool operator<(const S& rhs) const
{
// 比较 n 与 rhs.n,
// 然后为 s 与 rhs.s,
// 然后为 d 与 rhs.d
return std::tie(n, s, d) < std::tie(rhs.n, rhs.s, rhs.d);
}
};

参考资料:
解包tuple:http://www.cplusplus.com/reference/tuple/tie/
tie用于struct比较:https://zh.cppreference.com/w/cpp/utility/tuple/tie

3、Pair:
代码:

// pair::pair example
#include <utility>      // std::pair, std::make_pair
#include <string>       // std::string
#include <iostream>     // std::coutint main () {std::pair <std::string,double> product1;                     // default constructorstd::pair <std::string,double> product2 ("tomatoes",2.30);   // value initstd::pair <std::string,double> product3 (product2);          // copy constructorproduct1 = std::make_pair(std::string("lightbulbs"),0.99);   // using make_pair (move)product2.first = "shoes";                  // the type of first is stringproduct2.second = 39.90;                   // the type of second is doublestd::cout << "The price of " << product1.first << " is $" << product1.second << '\n';std::cout << "The price of " << product2.first << " is $" << product2.second << '\n';std::cout << "The price of " << product3.first << " is $" << product3.second << '\n';return 0;
}

参考资料:std::pair::pair

std::tuple、std::tie(可用于结构体大小比较)、std::pair用法相关推荐

  1. 【C语言进阶深度学习记录】二十 结构体大小计算与结构体内存布局的详细方法

    结构体大小的计算往往是面试笔试常考的知识.对于简单的结构体,可以一眼看出来,对于复杂的结构体,该如何计算结构体占用内存的大小呢? 本文学习所使用的编译器是gcc 4.4.5 使用其他编译器或者使用Wi ...

  2. Windows下struct和union字节对齐设置以及大小的确定(一 简介和结构体大小的确定)...

    在windows下设置字节对齐大小的方式,目前我了解有三种: 1. 在编译程序时候的编译选项  /Zp[n],如 cl /Zp4 表示对齐大小是4字节: 2. 预处理命令   #pragma pack ...

  3. C/C++ sizeof函数解析——解决sizeof求结构体大小的问题

    C/C++ sizeof函数解析--解决sizeof求结构体大小的问题 参考文章: (1)C/C++ sizeof函数解析--解决sizeof求结构体大小的问题 (2)https://www.cnbl ...

  4. 【转】彻底搞清计算结构体大小和数据对齐原则

    数据对齐: 许多计算机系统对基本数据类型合法地址做出了一些限制,要求某种类型对象的地址必须是 某个值K(通常是2,4或8)的倍数.这种对齐限制简化了形成处理器和存储器系统之间的接口的硬件 设计.例如, ...

  5. C和指针之结构体大小和成员变量位置距离结构开始存储的位置偏移字节

    1.问题 1).结构体大小 结构体成员的内存分配满足下面三个条件   2 结构体第一个成员的地址和结构体的首地址相同   3 结构体每个成员地址相对于结构体首地址的偏移量是该成员大小的整数倍,如果不是 ...

  6. C语言结构体详解(结构体定义,使用,结构体大小等)

    c语言结构体详解 1.c语言结构体 1.1 结构体基础知识 1.2 结构体声明 1.3 结构体特殊声明 1.4 结构体的自引用 1.5 结构体的大小的计算 1.5.1了解结构体大小计算规则 1.5.2 ...

  7. 结构体大小的计算方法

    结构体大小的计算需同时满足以下几点 一.结构体成员的偏移量必须是当前成员大小的整数倍.(0是任何数的整数倍) 举一个例子 struct Test1{char a; // 当前偏移量为0,是char所占 ...

  8. 结构体大小及其位域问题(from:byr)

    问题: struct mybitfields   {   unsigned short a : 4;   unsigned short b : 5;   unsigned short c : 7;   ...

  9. 结构体大小如何计算?

    以下内容摘自此处: 作者:太平小小草 链接:https://www.jianshu.com/p/e772fff47465 来源:简书 结构体大小计算有三个原则: 一,结构体变量的首地址,必须是结构体 ...

最新文章

  1. java 多线程缓存_[Java教程]【JAVA并发编程实战】12、使用condition实现多线程下的有界缓存先进先出队列...
  2. APPKIT打造稳定、灵活、高效的运营配置平台
  3. android studio类似软件,使Android Studio更高效的几款插件推荐
  4. mysql常用操作指令总结
  5. 通过链表深入理解Java的引用和对象
  6. windows2012 wsus6 更新慢
  7. 人性”的三张图,改变无数人!
  8. CodeForces - 721E
  9. Windows下phpstudy nginx.conf 配置PHP项目
  10. 使用Visual Studio 2017开发Linux程序
  11. 自我介绍html模板王,个性简短自我介绍模板十篇
  12. java求长方形的表面积程序_Android Studio实现长方体表面积计算器
  13. 苹果手机2019年什么时候出新款_[创立24周年]因强大而简单.智者,驭时而进 唯一的对手是上一个自己。要有舍才有得! - 手机数码电玩维修...
  14. nodemon:运行提示错误:无法加载文件 xxxx
  15. 【Android,Kotlin,TFLite】移动设备集成深度学习轻模型TFlite(图像分类篇)
  16. Tesla M40 训练机组装与散热改造
  17. [python自动化]selenium实现超星某某通自动评论
  18. c# 利用动态库DllImport(kernel32)读写ini文件(提供Dmo下载)
  19. 什么是Alpha通道
  20. 模拟手指触摸 Android,手势模拟(Hand Draw 3D Pose Tool FREE)免费版

热门文章

  1. java遍历一个类的属性名,java遍历对象属性
  2. 老师计算机组合照说说,生物老师座右铭 教师照片墙格言
  3. unity怎么导入系统的树_Unity5.0_树_软件教程_资源库
  4. MATLAB 线性回归多项式拟合+预测区间、置信区间的绘制
  5. 花滑三周连跳_三周半+四周跳来势汹汹 花滑女单将迎难度巨变?
  6. C语言的函数讲解(一)
  7. 2021湖南省地区高考成绩排名查询,湖南高考排名查询方法,2021年湖南高考成绩位次全省排名查询...
  8. 关于iframe框架?
  9. 通过监听器实现在线人数统计
  10. amp;amp;什么意思?