如何在C++11中初始化数组

How can I initialize array in a C++11 style?

本文关键字:初始化 数组 C++11      更新时间:2023-10-16

这个答案说C++11有了新的功能,它允许我们初始化这样的"可变大小的数组":

auto array = new double[M][N]();

但当我尝试这样做时,我会得到以下错误:

array size in new-expression must be constant

我没有忘记在.pro文件中添加-std=c++0x。我测试了另一个C++11功能,它运行得很好。

他错了吗?还是我?

谢谢。

C++没有这样不受限制的运行时大小的数组。C++11引入了一个与C VLA非常相似的功能,但它的局限性明显更大。C++中不允许有VLA的VLA,这意味着C++中任何多维数组的第二维、第三维和更远的维都必须是常量表达式。

显然,这是你违反的要求。您的N不是一个常量表达式。

在任何情况下,您的问题的标题都是关于初始化的,而实际上您遇到的问题与初始化根本无关。您使用的初始化语法()-对于C++11来说并不是什么新鲜事,它从第一个语言标准开始就存在于C++中。

您的代码中唯一的C++11特性是auto的上述用法。但它与初始化或数组无关。