簡體   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