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