C++:从数组中设置多个变量
C++: set multiple variables from array
我有以下程序:
#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])
但这真的不能为你节省多少。
相关文章:
- 将双精度变量设置为另一个变量的值
- 将变量设置为类型模板
- 如何为具有整数名称的变量设置位集
- 在 c++ 中将多个变量设置为相同的值
- 我是否必须在类中的所有变量C++设置为 private?
- 在C 中,如何使用变量设置Char Grid2d [x] [y]
- 如果将变量设置为等于新对象,旧对象会发生什么情况?
- C++ 给出编译器错误,将一个(静态)常量全局变量设置为另一个静态常量变量
- 是否可以将类成员变量设置为类函数的结果?
- 将 c++ 代码中的当前用户环境变量设置为对其他进程(如 cmds)可见
- 此CMAKE错误意味着什么?我的变量设置为未发现
- 如何基于用户设置的初始变量设置一组常数值
- 如何使用const成员变量设置数组大小
- 使用变量设置数组长度
- 使用变量设置bitset的大小
- 在C 中,如何将派生类中的私有变量设置为基类的输入值
- C 标量变量设置为零值
- C 定义变量设置值
- 正在将类级别的2D数组变量设置为传入值-C++
- 是否有C++标准类在作用域出口处将变量设置为值