gpt4 book ai didi

c++ - 如何以 C++11 样式初始化数组?

转载 作者:行者123 更新时间:2023-11-30 03:51:47 25 4
gpt4 key购买 nike

This answer说 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 of VLAs,这意味着 C++ 中任何多维数组的第二维、第三维和更多维必须是常量表达式。

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

无论如何,您的问题标题谈论的是初始化,而实际上您遇到的问题与初始化根本无关。您使用的初始化语法 - () - 对于 C++11 来说并不新鲜,它自第一个语言标准以来就存在于 C++ 中。

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

关于c++ - 如何以 C++11 样式初始化数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31101872/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com