繁体   English   中英

如何以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用法。 但这与初始化或数组无关。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM