C 11:make_tuple
翻译来自:https://这个指针。com/c11-make _ tuple-教程-示例/
本文中,我们将讨论什么是std:make_tuple以及我们为什么需要它。
初始化一个 std::tuple
我们可以通过在构造函数中传递元素作为参数来初始化一个std:tuple,即
//创建和初始化一个元组
std:tuple int,double,STD :3360 string result 1 { 22,19.28,' text ' };
您可能已经观察到我们需要在元组中将参数类型指定为模板参数。如果元素数量更多,有时会很痛苦。
有了这个,就没有办法自动推断它们,即以下代码将给出编译错误即
//编译错误,因为无法推断元组中元素的类型
自动结果{ 22,19.28,' text ' };//编译错误
错误:无法从“{22,1.9280000000000001e,text'}”推导出STD :3360初始值设定项_列表_ Tp '
自动结果{ 22,19.28,' text ' };
但是c 11提供了一些可以帮助我们避免这种痛苦的东西,即std::make_tuple。
std::make_tuple
std:make_tuple通过从参数类型推导出元组中元素的目标类型来创建一个标准:图对象。
让我们通过一个例子来理解,
//使用std:make_tuple创建一个元组
自动结果2=STD : make _ tuple(7,9.8,' text ');
这里我们没有指定标准:图对象结果封装的任何类型的元素。
std:make_tuple做了以下事情,
std::make_tuple接受三个参数并自动推导出它们的类型为int、double和字符串。然后它在内部创建了一个std:tupleint,double,std:string对象并初始化它并返回它。
//使用std:make_tuple创建元组
自动结果=STD : make _ tuple(7,9.8,' text ');
因此,基本上std:make_tuple有助于自动推导元组类型。
完整的例子如下
#包含输入输出流
#包含元组
#包含字符串
int main()
{
//创建和初始化元组
std:tupleint,double,STD :3360 string result 1 { 22,19.28,' text ' };
//编译错误,因为无法推断元组中元素的类型
//自动结果{ 22,19.28,' text ' };//编译错误
//使用std:make_tuple创建元组
自动结果2=STD : make _ tuple(7,9.8,' text ');
//std:make_tuple自动推导类型并创建元组
//打印值
STD : cout ' int value=' STD :3360 get 0(结果2)STD : endl;
STD : cout ' double value=' STD : get 1(结果2)STD : endl;
STD : cout '字符串值=' STD : get 2(结果2)STD : endl;
返回0;
}
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/112522.html