類模板
<memory>

std::allocator

template <class T> class allocator;
預設分配器
分配器是定義記憶體模型以供標準庫某些部分(尤其是 STL 容器)使用的類。

本節介紹“預設分配器模板”allocator(小寫)。這是所有標準容器將在未指定最後一個(可選的)模板引數時使用的分配器,也是標準庫中唯一預定義的分配器。

也可以定義其他分配器。任何具有與此“預設分配器”相同的成員並遵循其最低要求的類都可以用作標準容器的分配器。
也可以定義其他分配器。任何類Alloc對於allocator_traits<Alloc>產生有效的例項化,並定義了適當的成員,都可以用作標準容器的分配器(Alloc可能透過成員函式實現也可能不實現該功能)。

除了其解構函式外,標準預設分配器的任何成員allocator類模板均不得引入資料競爭。分配或取消分配儲存的成員函式的呼叫應發生在單個總順序中,並且每次此類取消分配應發生在下一個(如果有)分配之前。

嚴格來說,分配器描述的記憶體模型可以針對每種要分配的物件型別進行專門化,甚至可以為它們工作的每個容器儲存區域性資料。儘管預設的allocator.

模板引數

T
物件分配的元素的型別(別名為成員型別 value_type)。

成員型別

成員allocator 中定義代表
value_typeT元素型別
指標T*指向元素的指標
引用T&指向元素的引用
const_pointerconst T*指向常量元素的指標
const_referenceconst T&指向常量元素的引用
size_typesize_t元素數量
difference_typeptrdiff_t兩個指標之間的差
rebind<Type>成員類其成員型別 other 是等效的分配器型別,用於分配型別為 Type 的元素
成員allocator 中定義代表
value_typeT元素型別
指標T*指向元素的指標
引用T&指向元素的引用
const_pointerconst T*指向常量元素的指標
const_referenceconst T&指向常量元素的引用
size_typesize_t元素數量
difference_typeptrdiff_t兩個指標之間的差
rebind<Type>成員類其成員型別 other 是等效的分配器型別,用於分配型別為 Type 的元素
propagate_on_container_move_assignmenttrue_type指示當容器被移動賦值時,allocator 應進行傳播

成員函式


模板特化

標頭檔案 <memory>void 型別提供了 allocator 的特化,定義為
1
2
3
4
5
6
7
template <> class allocator<void> {
public:
  typedef void* pointer;
  typedef const void* const_pointer;
  typedef void value_type;
  template <class U> struct rebind { typedef allocator<U> other; };
};