Ant*_*nio 0 c++ standards c++17
当函数需要返回两个参数时,可以使用std :: pair编写它:
std::pair<int, int> f()
{return std::make_pair(1,2);}
Run Code Online (Sandbox Code Playgroud)
如果你想使用它,你可以这样写:
int one, two;
std::tie(one, two) = f();
Run Code Online (Sandbox Code Playgroud)
这种方法的问题是你需要定义'one'和'two'然后将它们分配给f()的返回值.如果我们能写出类似的东西会更好
auto {one, two} = f();
Run Code Online (Sandbox Code Playgroud)
我看了一个演讲(我不记得哪一个,对不起),演讲者说C++标准的人试图做那样的事情.我认为这个讲座是从2年前开始的.有谁知道现在(几乎是c ++ 17)你能做到或类似吗?
wal*_*lly 14
是的,有一种称为结构化绑定的东西允许以这种方式初始化多个值.
语法使用方括号但是:
#include <utility>
std::pair<int, int> f()
{
//return std::make_pair(1, 2); // also works, but more verbose
return { 1, 2 };
}
int main()
{
auto[one, two] = f();
}
Run Code Online (Sandbox Code Playgroud)