一次存储元组函数中的 2 个变量

Jon*_*ovi 5 c++ recursion tuples return

我有一个元组函数,它返回以下形式的元组

<node*,int>
Run Code Online (Sandbox Code Playgroud)

有没有办法一次存储 2 个值而不创建另一个元组。我知道我们可以做到

n,score=tuplefunct(abc);
Run Code Online (Sandbox Code Playgroud)

在Python中。但是如果我想在 C++ 中存储两个返回值而不创建另一个元组,我需要调用两次

n=get<0>(tuplefunct(abc);
score=get<1>(tuplefunct(abc));
Run Code Online (Sandbox Code Playgroud)

在 C++ 中是否有任何替代方案可以立即存储值。

for*_*818 4

您不需要调用该函数两次(请注意,不涉及“另一个元组”,该函数返回一个,这就是您所使用的):

auto x = tuplefunct(abc);
auto n = get<0>(x);
auto score = get<1>(x);
Run Code Online (Sandbox Code Playgroud)

如果您有 C++17 可用,您可以使用结构化绑定

auto [n,score] = tuplefunct(abc);
Run Code Online (Sandbox Code Playgroud)

或者,要接近没有 C++17 的情况,您可以使用std::tie(从 C++11 开始):

node* n;
int score;
std::tie(n,score) = tuplefunct(abc);
Run Code Online (Sandbox Code Playgroud)

  • 我还要提到使用 `std::tie` 作为: `node* n; 分数;std::tie(n, Score) = tuplefunct(abc);`,在C++17之前没有引入辅助变量`x`。 (2认同)