填充可变大小的数组

时间:2010-09-12 05:37:34

标签: c++

int* HT;
int HTc = 500;
HT = new int[HTc] = {-1}; //Fill array with -1

我收到警告

  

扩展初始化程序列表仅适用于-std = c ++ 0x或   = STD = GNU ++ 0x中

我认为这意味着它与我的教授的ANSI标准不兼容。坚果。 我怎么能这样做呢?

3 个答案:

答案 0 :(得分:6)

使用std :: fill。使用std :: vector而不是c样式数组会更好,但仅用于演示:

#include <algorithm>

int HTc = 500;
int HT[] = new int[HTc];
std::fill(HT, HT+HTc, -1);
// ...
delete[] HT;

答案 1 :(得分:2)

即使您使用了推荐的选项,我也不确定这会以您想要的方式工作 - 它不会将第一个数组元素初始化为-1而其余数据元素初始化为0吗?

只需遍历所有元素并单独设置它们。

答案 2 :(得分:2)

除非你有其他一些真正优秀的理由,否则首选的方法是不仅使用向量,还要在调用ctor时指定初始值:std::vector<int> HT(500, -1);