[英]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.