C++:从数组中设置多个变量

C++: set multiple variables from array

本文关键字:变量 设置 数组 C++      更新时间:2023-10-16

我有以下程序:

#include <iostream>
using namespace std;
int main()
{
int array[] = {1, 2, 3};
int a = array[0],
b = array[1],
c = array[2];
cout << c << endl;
}

这打印了 3,到目前为止一切顺利。但我想知道是否有更优雅的语法来一次从数组声明多个变量。例如(只是一个想法,不编译(:

int [a, b, c] = array;

C++或新标准之一中是否有这样的功能?我不能是唯一一个看它的人。

或者:一次从数组中设置多个变量的最优雅方法是什么?

在 C++17 中,您可以使用结构化绑定- 它们的语法与您发布的语法非常相似:

auto [a, b, c] = array;

魔杖盒上的现场示例


最接近 C++11/14 的是std::tie,但不幸的是它不适用于数组:它只支持std::tuple.但是,您可以使用元编程创建一个实用程序,该实用程序从数组创建元组,然后在其上使用tie。W.F.在这个答案中有一个可能的实现。

您正在寻找的内容称为结构化绑定,它将在 C++17 中可用。 它们将允许您创建对数组元素、某些类/结构和元组类对象的引用。

由于您正在寻找 C++17 之前的解决方案,您能做的最好的事情就是使用std::tie来构建引用您想要分配的内容的元组,例如

int array[] = {1, 2, 3};
int a, b, c;
std::tie(a, b, c) = std::tie(array[0], array[1], array[2])

但这真的不能为你节省多少。