看板 C_and_CPP 關於我們 聯絡資訊
原則上,可以用bitset甚至deque<bool>,但是不要使用vector<bool> 原因在於vector<bool>裡面存的不是bool,它不是真正的STL container vector<bool>在標準裡面被規定成"每一個元素只佔 1位元(bit)" 當初這麼規定似乎是為了空間最佳化等等的理由 但這個規定導致了諸多後遺症 例如 vector<bool> 的 iterator 或 operator [] 沒辦法返回一個bool& 所以下面這段code理論上無法成功編譯 bool *b = &v[0]; //假設v是vector<bool> 總之雖然現有的標準中存在 vector<bool> 但標準委員會認為應該避免使用它 參照: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2204.html ※ 引述《wheniam64 (嘿)》之銘言: : 開發平台(Platform): (Ex: VC++, GCC, Linux, ...) : C++ : 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) : 問題(Question): : 寫一個class中的private member用到 vector : 於是#include<vector> : 我寫: vector<bool> a(10); : 但是compiler一直不給我過,可是這語法應該沒問題 : 請教版上前輩這問題如何解決 : 感謝!! : 餵入的資料(Input): : 預期的正確結果(Expected Output): : 錯誤結果(Wrong Output): : 感謝提醒 : 他寫: expected `;' before '(' token : 程式碼(Code):(請善用置底文網頁, 記得排版) : 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.162.59.213
chinting:好像有點懂了!感謝你~~ 12/28 23:50
elfkiller:哇 原來有這個問題 大推 12/29 00:13
loveme00835:其實會用的人就不會寫出 bool *b = &v[0]; 這寫法 12/29 02:01
tyc5116:另外問一下,vector<bool>適用在何種情況? 12/29 08:33
diabloevagto:不建議用那種方式了...如果要用到就用bitset 12/29 09:02