C++11:std::tuple

技术C++11:std::tuple C++11:std::tuple翻译来自:https://thispointer.com/c11-stdtuple-tutorial-examples/
在本文中,

C 11:std:tuple

翻译来自:https://这个指针。com/c11-stdtuple-教程-示例/

在本文中,我们将讨论什么是标准:图以及如何使用它。

什么是 std::tuple 以及我们为什么需要它

标准:图是一种可以将固定大小的异构值绑定在一起的类型。我们需要在创建元组对象时将元素的类型指定为模板参数。

创建一个 std::tuple 对象

让我们声明一个std:tuple,它是一个int、double和std:string的集合,即

//创建int、double和线的元组

std:tupleint,double,std:string结果(7,9.8,‘text’);

现在,所有三种类型的变量都封装在一个对象中。我们也可以从函数中返回这个元组对象。所以,基本上它帮助我们从一个函数返回多个值。最终,它帮助我们避免创建不必要的结构。

需要头文件

#包含元组//STD : tupl需要

从 std::tuple 获取元素

我们可以使用std:get函数通过将索引值指定为模板参数来获取隐藏在元组对象中的元素。

让我们从元组对象中获取第一个元素,即

代码//从元组中获取第一个整数值

int iVal=std:get0(结果);

同样从元组对象中获取第二个和第三个元素,即

//从元组中获取第二个双精度值

double dVal=std:get1(结果);

//从元组中获取第三个字符串值

STD :字符串STrval=STD : get 2(结果);

从元组中获取超出范围的值

获取任何索引超过元组封装的元素数量的元素都会导致编译时错误。

例如,试图从元组中获取第四个元素会导致编译时错误,因为这个元组对象只有3个元素,即

//从元组中获取第四个整数值

//将导致编译错误,因为此元组

//只有3个元素

int ival 2=STD :3360 get 4(结果);//编译错误

从元组获取值时类型转换错误

同样,从元组获取元素时使用错误的类型也会导致错误,即

//错误的强制转换将导致编译时错误

//从字符串中的元组获取第一个值

标准:字符串Strva L2=标准:获取0(结果);//编译错误

上面这行会导致编译错误,因为元组中第一个元素的类型是(同国际组织)国际组织而不是线

通过动态索引从元组中获取值

std:get中的模板参数应该是编译时常量,否则会导致编译时错误即

int x=1;

//从元组中获取第二个双精度值

//编译错误,因为x不是编译时常量

double dVal2=std:getx(结果);//编译错误

上面这行会导致编译错误,因为x不是编译时常量。下面几行可以正常工作

const int I=1;

//从元组中获取第二个双精度值

double dVal3=std:geti(结果);

#包含输入输出流

#包含元组标准:图元组需要

#包含字符串

/*

*通过将一个函数中的多个值绑定到一个

*元组对象。

*/

std:tupleint,double,std:string someFunction()

{

//创建int、double和线的元组

std:tupleint,double,std:string结果(7,9.8,‘text’);

//返回元组对象

返回结果;

}

int main()

{

//从函数中获取元组对象

std:tupleint,double,STD :3360 string result=some function();

//从元组中获取值

//从元组中获取第一个整数值

int iVal=std:get 0(结果);

//从元组中获取第二个双精度值

double dVal=std:get 1(结果);

//从元组中获取第三个字符串值

STD :字符串STrval=STD : get 2(结果);

//打印值

STD : cout ' int value=' IVal STD : endl;

STD : cout ' double value=' dVal STD : endl;

STD : cout '字符串值=' Strval STD : endl

//从元组中获取第四个整数值

//将导致编译错误,因为此元组

//只有3个元素

//int ival 2=STD :3360 get 4(结果);//编译错误

//错误的强制转换将导致编译时错误

//从字符串中的元组获取第一个值

//STD :3360字符串STrva L2=STD : get 0(结果);//编译错误

int x=1;

//从元组中获取第二个双精度值

//编译错误,因为x不是编译时常量

//double dval 2=STD : getx(结果);

const int I=1;

//从元组中获取第二个双精度值

double dVal3=std:get i(结果);

返回0;

}

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/112523.html

(0)

相关推荐

  • 8-Java类与对象

    技术8-Java类与对象 8-Java类与对象类与对象引入类// 类与对象
    // 一个程序就是一个世界,有很多事物(对象[属性, 行为])public class Object01{public sta

    礼包 2021年12月17日
  • 腾讯云COS使用前端js的api获取签名

    技术腾讯云COS使用前端js的api获取签名 腾讯云COS使用前端js的api获取签名腾讯云COS使用前端js的api获取签名由于项目之前是用阿里oss的api进行开发 获取签名啥的 不用走内网服务器

    礼包 2021年11月19日
  • DIV布局规范中CSS类及id命名方式是什么

    技术DIV布局规范中CSS类及id命名方式是什么这篇文章将为大家详细讲解有关DIV布局规范中CSS类及id命名方式是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。DI

    攻略 2021年11月11日
  • wei的成语,带wei(第一声)字的成语

    技术wei的成语,带wei(第一声)字的成语【危在旦夕】危险就在眼前。 【危如累卵】如垒起的蛋那样危险。喻极其危险。 【危言正色】刚直的言论和严正的态度。 【危言逆耳】正直的规劝听起来不顺耳。 【危言高论】正直而不同凡响

    生活 2021年10月20日
  • 9、gRPC

    技术9、gRPC 9、gRPC之前 protobuf 时安装过,不需安装快速开启 grpc 服务
    新建目录 testGrpc 。以及testGrpc/service 和testGrpc/clientte

    礼包 2021年12月5日
  • Oracle 11g RAC中INTERMEDIATE Stuck Archiver状态的解决方法

    技术Oracle 11g RAC中INTERMEDIATE Stuck Archiver状态的解决方法这篇文章给大家介绍Oracle 11g RAC中INTERMEDIATE Stuck Archiver状态的解决方法,

    攻略 2021年11月12日