首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何以C++11样式初始化数组?

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

Stack Overflow用户
提问于 2015-06-28 16:07:00
回答 1查看 142关注 0票数 1

This answer说C++11有一个新特性,它允许我们初始化“可变大小的数组”,如下所示:

代码语言:javascript
复制
auto array = new double[M][N]();

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

代码语言:javascript
复制
array size in new-expression must be constant

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

他错了吗?或者是我?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-28 16:25:37

C++没有这样无限制的运行时大小的数组。C++11引入了一个远程类似于C++11的特性,但它的限制要大得多。您不允许在C++中拥有VLA,这意味着C++中任何多维数组的第二个、第三个和进一步的维度必须是常量表达式。

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

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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31101872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档