如何在C++11中初始化数组
How can I initialize array in a C++11 style?
这个答案说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
的上述用法。但它与初始化或数组无关。
相关文章:
- 是否可以在编译时初始化数组,以便在运行时不会花费时间?
- 在函数内部的声明中初始化数组,并在外部使用它
- 为什么用结构初始化数组需要指定结构名称
- 有没有一种代码密度较低的方法来使用非默认构造函数初始化数组?
- C++使用另一个数组和新值初始化数组
- 初始化数组、"memset"或" {//value} "的最佳方法是什么?
- 在 constexpr 构造函数中初始化数组是否合法?
- 我可以初始化 const 实例,以便我可以将其用作 const 来初始化数组吗?
- 在构造函数中初始化数组
- 是否可以使用函数返回的值初始化数组
- 使用宏使用额外元素初始化数组
- 在循环中显示不同值的初始化数组
- 如何在macOS中的旧扩展clang和gcc编译器中初始化数组和向量
- 使用可变模板列表初始化数组,并放置new
- 使用函数从 Visual Studio 2017 中的 main 创建和初始化数组
- 使用 c++ 中的函数初始化数组
- 这是使用构造函数初始化数组对象的最佳方法吗?
- C++ 使用变量而不是常量表达式初始化数组
- 在初始化列表中初始化数组的更好方法
- 在可变参数模板类中初始化数组