繁体   English   中英

关于 C++ 中 bool 数组的初始化

[英]Regarding initialization of bool array in C++

我正在做一个编程问题,在那里我初始化了 bool 数组,如下所示:-

bool hash[n] = {0};

我提交了代码,但我得到了错误的答案。 我试图找出问题所在。 然后我将上述语句更改为以下内容:-

bool hash[n];
fill(hash, hash + n, 0);

这给出了正确的答案。 我不明白为什么布尔数组初始化不起作用。

之后出于好奇,我尝试了以下操作:-

bool hash[n] = {0};
fill(hash, hash + n, 0);

我提交了代码,我得到了错误的答案。 这真的让我大吃一惊。 有输入吗?

通过几个在线 c++ 编译器,我能够重现此错误。 (其中一些接受 C99 之后的 VLA 并且不抛出任何错误)

写作

int n=20;
bool hash[n]={0};

抛出:

main.cpp:6:13: 错误:可变大小的 object 可能未初始化 bool hash[n]={0}; ^ 1 个错误生成。 编译器退出状态 1

正如上面评论中广泛讨论的那样,在运行时声明数组大小/长度不是标准 C++ 的功能。

但是,这会起作用:

int n=20;
bool hash[n];

因为未指定/初始化数组元素。

为了重现性,这里是产生这个案例的在线编译器的链接。

对于这种情况,请始终使用向量。

暂无
暂无

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

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