内联数组初始化

时间:2011-01-03 10:17:55

标签: c++ arrays c++11

我习惯使用

new int[] {1,2,3,4,5};

用于初始化数组。但现在看来,这不再起作用,我必须明确说明有多少元素,

new int[5] {1,2,3,4,5};

所以编译器忘了怎么算?

为了使这个问题成为一个封闭的问题,有没有办法省略元素的数量?

2 个答案:

答案 0 :(得分:21)

这在当前版本的C ++中从未起作用,您只能零初始化(或不初始化)动态分配的数组。

一直有效的是非动态分配的数组初始化:

int myarray[] = {1, 2, 3, 4, 5};

也许你对此感到困惑?

即使在C ++ 0x中,在新表达式中省略显式数组大小说明符也不是合法语法。

答案 1 :(得分:2)

C ++从未允许使用上面未知大小的元素初始化数组。我知道的唯一两种方法是指定元素的数量或使用指针。