[C++11/14新特性] tuple元组介绍

C++11 标准新引入了一种类模板,命名为 tuple(中文可直译为元组)。tuple 最大的特点是:实例化的对象可以存储任意数量、任意类型的数据。tuple 的应用场景很广泛,例如当需要存储多个不同类型的元素时,可以使用 tuple;当函数需要返回多个数据时,可以将这些数据存储在 tuple 中,函数只需返回一个 tuple 对象即可。

1.声明并初始化一个tuple对象

    std::tuple<int, float, std::string> t1(41, 6.3, "nico");std::cout << "tuple<int, float, std::string>, sizeof = " << sizeof(t1) << std::endl;std::cout << "t1: " << std::get<0>(t1) << ' ' << std::get<1>(t1) << ' ' << std::get<2>(t1) << std::endl;    // 获取下标 0 1 2处的元素

2.利用auto关键字,自动获取类型

    auto t2 = std::make_tuple(22, 44, "hello");std::cout << "t2 sizeof = " << sizeof(t2) << std::endl;std::cout << "t2: " << std::get<0>(t2) << ' ' << std::get<1>(t2) << ' ' << std::get<2>(t2) << std::endl;

3.tuple比大小操作  

    // 比大小操作if(t1 < t2){std::cout << "t1 < t2" << std::endl;}else if(t1 > t2){std::cout << "t1 > t2" << std::endl;}else{std::cout << "t1 = t2" << std::endl;}

4.tie绑定操作进行复制

    std::tuple<int, float, std::string> t3(77, 1.1, "more light");int i1;float f1;std::string s1;tie(i1, f1, s1) = t3;std::cout << "i1 = " << i1 << " f1 = " << f1 << " s1 = " << s1 << std::endl;

5.tuple_size函数   功能是获取某个 tuple 对象中元素的个数

    typedef std::tuple<int, float, std::string> TupleType;              // 对tuple<int,                 float, std::string>取别名 为 TupleTypeint value = std::tuple_size<TupleType>::value;std::cout << "TupleType对象的元素个数为: " << value << std::endl;    // 3

6.tuple_element<i, type>::type函数 它只有一个成员变量 type,功能是获取某个 tuple 对象第 i+1 个元素的类型

    std::tuple_element<0, TupleType>::type i2 = 1;std::cout << "i2 = " << i2 << std::endl;                           // i2 = 1

完整代码示例:

#include <iostream>
#include <tuple>int main(){std::tuple<int, float, std::string> t1(41, 6.3, "nico");std::cout << "tuple<int, float, std::string>, sizeof = " << sizeof(t1) << std::endl;std::cout << "t1: " << std::get<0>(t1) << ' ' << std::get<1>(t1) << ' ' << std::get<2>(t1) << std::endl;    // 获取下标 0 1 2处的元素// 利用auto关键字  自动获取类型     make_tuple() 函数,它以模板的形式定义在 头文件中,功能是创建一个 tuple 右值对象(或者临时对象)auto t2 = std::make_tuple(22, 44, "hello");std::cout << "t2 sizeof = " << sizeof(t2) << std::endl;std::cout << "t2: " << std::get<0>(t2) << ' ' << std::get<1>(t2) << ' ' << std::get<2>(t2) << std::endl;// 比大小操作if(t1 < t2){std::cout << "t1 < t2" << std::endl;}else if(t1 > t2){std::cout << "t1 > t2" << std::endl;}else{std::cout << "t1 = t2" << std::endl;}// tie绑定操作进行复制std::tuple<int, float, std::string> t3(77, 1.1, "more light");int i1;float f1;std::string s1;tie(i1, f1, s1) = t3;std::cout << "i1 = " << i1 << " f1 = " << f1 << " s1 = " << s1 << std::endl;// tuple_size函数   功能是获取某个 tuple 对象中元素的个数typedef std::tuple<int, float, std::string> TupleType;              // 对tuple<int, float, std::string>取别名 为 TupleTypeint value = std::tuple_size<TupleType>::value;std::cout << "TupleType对象的元素个数为: " << value << std::endl;    // 3// tuple_element<i, type>::type函数 它只有一个成员变量 type,功能是获取某个 tuple 对象第 i+1 个元素的类型std::tuple_element<0, TupleType>::type i2 = 1;std::cout << "i2 = " << i2 << std::endl;                           // i2 = 1return 0;
}

运行结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/20702.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3D目标检测入门:探索OpenPCDet框架

前言 在自动驾驶和机器人视觉这两个飞速发展的领域中&#xff0c;3D目标检测技术扮演着核心角色。随着深度学习技术的突破性进展&#xff0c;3D目标检测算法的研究和应用正日益深入。OpenPCDet&#xff0c;这个由香港中文大学OpenMMLab实验室精心打造的开源工具箱&#xff0c;…

【用Python画画】六一儿童节画爱心

本文收录于 《Python编程入门》专栏&#xff0c;从零基础开始&#xff0c;分享一些Python编程基础知识&#xff0c;欢迎关注&#xff0c;谢谢&#xff01; 文章目录 一、前言二、代码示例三、知识点梳理四、总结 一、前言 本文介绍如何使用Python的海龟画图工具turtle&#xf…

堆排序的实现

在上一篇博客中&#xff0c;介绍了堆的实现&#xff0c;现在来介绍一下堆排序。 一.打印有序&#xff1a; 现在先给一个无序的数组&#xff0c;现在我们利用我们实现的堆的功能先完成一下打印排序&#xff1a; 在for循环里是一个建堆的过程&#xff0c;每来一个数据就放入堆中…

linux进程的加载和启动过程分析

我们的源代码通过预处理,编译,汇编,链接后形成可执行文件,那么当我们在终端敲下指令$ ./a.out argv1 argv2 后,操作系统是怎么将我们的可执行文件加载并运行的呢? 首先知道,计算机的操作系统的启动程序是写死在硬件上的,每次计算机上电时,都将自动加载启动程序,之后…

python第五次作业

1.请实现一个装饰器&#xff0c;每次调用函数时&#xff0c;将函数名字以及调用此函数的时间点写入文件中 # 导入datetime模块&#xff0c;用于获取当前时间并格式化输出 import datetime# 定义一个装饰器工厂函数log_funcName_time&#xff0c;它接受一个参数time def log_fu…

红外听力教学考试系统-红外语音听力广播在大学英语四六级听力考试中应用

红外听力教学考试系统-红外语音听力广播在大学英语四六级听力考试中的应用 由北京海特伟业科技有限公司任洪卓发布于2024年6月1日 红外语音听力广播&#xff08;即红外听力教学考试系统&#xff09;在英语四六级听力考试的应用正日益凸显出其重要性和优越性。在当前的高等教育…

xcode删除依赖包package,删除不必要的依赖项

点击项目&#xff0c;然后点击PROJECT项里面的Package DepenDependencies&#xff1a; 选中一个依赖项&#xff0c;然后点击减号&#xff0c;就可以把依赖项删除掉了&#xff0c;左侧项目下面的Package已经没有了这个依赖项 TARGET下面的package也要删除&#xff1a;在这里删除…

大数据分析统计

大数据分析统计 from datetime import datetimeimport pandas as pd import matplotlib.pyplot as pltpm25files [PM2.5_2021.csv, PM2.5_2022.csv, PM2.5_2023.csv] pm10files [PM10_2021.csv, PM10_2022.csv, PM10_2023.csv]def read_csv_file(files):# 每个文件都有表头…

C++之类(class)的三种成员修饰符(public、private、protected)总结

1、背景介绍 在C中&#xff0c;类&#xff08;class&#xff09;中成员的三种访问修饰符&#xff08;access specifiers&#xff09;用于控制类的成员&#xff08;属性和方法&#xff09;的访问权限。这些修饰符决定了类成员在类的外部和内部是否可以被访问。以下是这三种访问…

macOS上编译android的ffmpeg及ffmpeg.c

1 前言 前段时间介绍过使用xcode和qt creator编译调试ffmepg.c&#xff0c;运行平台是在macOS上&#xff0c;本文拟介绍下android平台如何用NDK编译链编译ffmepg库并使用。 macOS上使用qt creator编译调试ffmpeg.c macOS上将ffmpeg.c编译成Framework 大体思路&#xff1a; 其…

信息学奥赛初赛天天练-18-挑战程序阅读-最长公共子序列、字符串与数组越界的巧妙应用

PDF文档公众号回复关键字:20240601 1 2023 CSP-J 阅读程序2 阅读程序&#xff08;程序输入不超过数组成字符串定义的范围&#xff1a;判断题正确填√&#xff0c;错误填&#xff1b;除特殊说明外&#xff0c;判断题1.5分&#xff0c;选择题3分&#xff0c;共计40分&#xff…

Dijkstra求最短路篇二(全网最详细讲解两种方法,适合小白)(python,其他语言也适用)

前言&#xff1a; Dijkstra算法博客讲解分为两篇讲解&#xff0c;这两篇博客对所有有难点的问题都会讲解&#xff0c;小白也能很好理解。看完这两篇博客后保证收获满满。 第一篇博客讲解朴素Dijkstra算法Dijkstra求最短路篇一(全网最详细讲解两种方法&#xff0c;适合小白)(p…

计网ppt标黄知识点整理第(2)章节——谢希仁版本、期末复习自用

物理层考虑的是怎样才能在连接各种计算机的传输媒体上传输数据比特流&#xff0c;而不是指具体的传输媒体。4 个特性&#xff1a; 机械特性&#xff1a;指明接口所用接线器的形状和尺寸、引线数目和排列、固定和锁定装置等。 电气特性&#xff1a;指明在接口电缆的各条线上出现…

基于Springboot驾校预约平台小程序的设计与实现(源码+数据库+文档)

一.项目介绍 系统角色&#xff1a;管理员、教练、学员 小程序(仅限于学员注册、登录)&#xff1a; 查看管理员发布的公告信息 查看管理员发布的驾校信息 查看所有教练信息、预约(需教练审核)、评论、收藏喜欢的教练 查看管理员发布的考试信息、预约考试(需管理…

2024年东北师范CCPC

文章目录 A.Paper WateringB.nIM gAMEE.Checksum A.Paper Watering 思路&#xff1a;题目说有平方和开方两种操作&#xff0c;如果这个数是平方数&#xff0c;那么它开方之后就只能开方&#xff0c;如果平方的话就重复了&#xff0c;反之就有开方和平方两种操作。 代码如下 //…

为了方便看公众号文章,我搭建了个博客,在线看公众号所有历史文章,想看哪天的文章一秒就能找到

公众号没有个网页版的文章列表&#xff0c;只能在电脑和手机客户端看&#xff0c;想看之前的历史文章只能一直往下拉&#xff0c;想找某篇文章非常费劲。 为了方便看公众号文章&#xff0c;我搭建了个博客&#xff0c;博客地址https://sushengbuhuo.github.io/blog &#xf…

通过 SFP 接口实现千兆光纤以太网通信1

基于米联客ARTIX-7 系列开发板及其开发手册。 总体实现框图如下&#xff1a; SFP 接口 SFP 信号定义如下图所示。 Tri Mode Ethernet MAC 设置 由于使用千兆通讯&#xff0c;因此将速率设为 1Gbps。如下图所示。 首先&#xff0c;由于该 IP 需要与 IP 核 1G/2.5G Ethernet …

基于IoTDB 平台的学习和研究

Apache IoTDB&#xff08;物联网数据库&#xff09;是一个针对物联网领域的高性能原生数据库&#xff0c;适用于数据管理和分析&#xff0c;并可在边缘计算和云端部署。由于它轻量级的架构、高性能和丰富的功能集&#xff0c;以及与Apache Hadoop、Spark和Flink的深度集成&…

数据管理知识体系必知的14张语境关系图

近期对数据管理知识体系中的语境关系图进行了整体学习梳理,总共有14张图,具体如下,供大家参考。应该说语境关系图和环境因素六边形图是各有侧重、互为补充关系。语境关系图是环境因素六边形图的细化,描述了每个知识领域中的细节,相当于数据管理的微观视角, 包括与人员、 …

kali中切换python版本

kali中切换python版本 在日常使用的过程中&#xff0c;可以通过一些工具来做打靶环境&#xff0c;或者工具的启动&#xff0c;都和python关联&#xff0c;而有时存在工具安装&#xff0c;或者运行的时候出现报错&#xff0c;这时候极大可能是因为我们本地的kali中python的版本不…