類模板特化
<vector>

std::vector<bool>

template < class T, class Alloc = allocator<T> > class vector; // generic templatetemplate <class Alloc> class vector<bool,Alloc>;               // bool specialization
布林向量
這是一個 vector 的特化版本,用於型別為bool的元素,併為空間進行了最佳化。

它的行為類似於 vector 的未特化版本,但有以下變化
  • 儲存空間不一定是bool值的陣列,但庫實現可能會最佳化儲存,使得每個值都儲存在一個位元位中。
  • 元素不是使用 allocator 物件構造的,而是直接在內部儲存的相應位元位上設定其值。
  • 成員函式 flip 以及成員函式 swap 的一個新簽名。
  • 一個特殊的成員型別 reference,它是一個類,透過一個模擬bool引用的介面來訪問容器內部儲存中的單個位元位。相反,成員型別const_reference是一個普通的bool.
  • 該容器使用的指標和迭代器型別不一定是指標或符合規範的迭代器,儘管它們應模擬其大部分預期行為。

這些變化為這個特化版本提供了一個奇特的介面,並優先考慮記憶體最佳化而非處理效率(這可能適合也可能不適合您的需求)。在任何情況下,都無法直接為bool例項化未特化的 vector 模板。避免這種情況的變通方法包括使用不同的型別(char, unsigned char)或容器(如 deque),或使用包裝型別,或為特定的分配器型別進行進一步的特化。

bitset 是一個為固定大小的位元位陣列提供類似功能的類。

模板引數

Alloc
用於定義儲存分配模型的分配器物件的型別。預設情況下,使用allocator<bool>,它定義了最簡單的記憶體分配模型並且與值無關。
別名為成員型別vector<bool>::allocator_type.

成員型別

成員型別定義說明
value_type第一個模板引數 (bool)
allocator_type第二個模板引數 (Alloc)預設為allocator<bool>
引用一個特殊的成員類(見下面的 reference
const_referencebool
指標一個模擬指標行為的型別隨機訪問迭代器,可轉換為const_pointer
const_pointer一個模擬指向 const 的指標行為的型別
iterator一個模擬 隨機訪問迭代器 行為的型別隨機訪問迭代器,可轉換為const_iterator
const_iterator一個模擬指向 const 的 隨機訪問迭代器 行為的型別
reverse_iteratorreverse_iterator<iterator>
const_reverse_iteratorreverse_iterator<const_iterator>
difference_type一個有符號整數型別相同,通常與 ptrdiff_t 一樣
size_type一個無符號整數型別的無符號整數型別,通常與 size_t 一樣

成員類


成員函式

該特化版本具有與未特化的 vector 相同的成員函式,除了 dataemplaceemplace_back,這些函式在此特化版本中不存在。

它增加了以下內容

非成員類特化


資料競爭

不保證對不同元素的同時訪問是執行緒安全的(因為儲存位元組可能由多個位元位共享)。