先說結論:
在底層實現中,vector
中為了節省空間,bool
並不真的是以單個位元組來儲存的,而是通過位bit
來表示的,乙個位代表乙個bool
表示。
vector不滿足stl容器的必要條件,你最好不要使用它;而deque和bitset是基本能滿足你對這裡我不想深究了,因為它是不提倡的技術。其主要原因就是vector不是標準容器,不符合vector提供的效能的需要的替代資料結構
t *p = &c[0];
,返回的是乙個引用**,究其原因就是底層內部是使用了壓縮位數來表達bool,借助引用來模擬返回的是乙個bool位元組。。。 避免使用vector bool
作為乙個stl容器,vector僅僅有兩點不正確。首先。它不是乙個stl容器。其次,它並不儲存bool。除此之外。一切正常。乙個物件要成為容器,就必須滿足c 標準中列出的全部條件。當中乙個條件是,假設c是包括物件t的容器,並且c支援operator,那麼以下的 必須可以被編譯 t p c 0 換句話...
10 避免使用with
程式經常需要對單個物件依次呼叫一系列方法。function status info 複製 function f x,y 複製 變數作用域和物件命名空間之間的衝突使得with 塊異常脆弱。error status connecting status connecting widget.prototyp...
vector 簡單使用
vector是c 標準模板庫中的部分內容,它是乙個多功能的,能夠操作多種資料結構和演算法的模板類和函式庫。vector之所以被認為是乙個容器,是因為它能夠像容器一樣存放各種型別的物件,簡單地說,vector是乙個能夠存放任意型別的動態陣列,能夠增加和壓縮資料。為了可以使用vector,必須在你的標頭...