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