下一代std :: tie

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)

演示