表格中的可变大小数组

时间:2016-02-02 16:57:03

标签: c++ arrays multidimensional-array

我是c ++的新手,如果有人能帮助解决以下问题,我将不胜感激。

当我想创建一个可变大小(S)的数组(Arr)时,我会按以下方式进行:

const int S=10;
int Arr[S];

但是,在我尝试编写的代码中,我需要从表中选择S.假设我有以下表格:

int Table[3]={11, 21, 31};

我从表中选择S并定义Arr

const int S=Table[0];
int Arr[S];

我无法编译此代码,因为我得到一个错误,S必须有一个常量具有常量值。

我将不胜感激任何帮助/提示。

1 个答案:

答案 0 :(得分:1)

要解决此问题,您需要声明Table constexpr:

void foo() {
  const int S=10;
  int Arr[S];
  constexpr int Table[3]={11, 21, 31};
  constexpr int S2=Table[0];
  int Arr2[S2];
}

说明:通过声明表constexpr,您可以让编译器知道它在编译时知道它的内容。现在可以在使用文字常量时使用它,包括数组大小。我已经展示了使用中间constexpr变量来更好地说明这种效果,但您可以直接使用Table[0]作为Arr2大小。

<强> NB 即可。 constexpr是在C ++ 11中引入的关键字,但我认为,在2016年默认使用此方言是安全的。