allocator_traits 類別
類別範本描述補充配置器類型的物件。 配置器類型是任何類型,可描述用來管理所配置儲存空間的配置器物件。 具體來說,針對任何配置器類型 Alloc
,您可以使用 allocator_traits<Alloc>
來判斷啟用配置器之容器所需的所有資訊。 如需詳細資訊,請參閱預設 allocator 類別。
語法
template <class Alloc>
class allocator_traits;
成員
Typedefs
名稱 | 描述 |
---|---|
allocator_type |
此類型是範本參數 Alloc 的同義字。 |
const_pointer |
如果該類型的格式良好,則此類型為 Alloc::const_pointer ;否則,此類型為 pointer_traits<pointer>::rebind<const value_type> 。 |
const_void_pointer |
如果該類型的格式良好,則此類型為 Alloc::const_void_pointer ;否則,此類型為 pointer_traits<pointer>::rebind<const void> 。 |
difference_type |
如果該類型的格式良好,則此類型為 Alloc::difference_type ;否則,此類型為 pointer_traits<pointer>::difference_type 。 |
pointer |
如果該類型的格式良好,則此類型為 Alloc::pointer ;否則,此類型為 value_type * 。 |
propagate_on_container_copy_assignment |
如果該類型的格式良好,則此類型為 Alloc::propagate_on_container_copy_assignment ;否則,此類型為 false_type 。 |
propagate_on_container_move_assignment |
如果該類型的格式良好,則此類型為 Alloc::propagate_on_container_move_assignment ;否則,此類型為 false_type 。 如果類型為 true,則啟用配置器的容器會複製其在 move 指派上的預存配置器。 |
propagate_on_container_swap |
如果該類型的格式良好,則此類型為 Alloc::propagate_on_container_swap ;否則,此類型為 false_type 。 如果類型為 true,則啟用配置器的容器會在交換時交換其預存配置器。 |
size_type |
如果該類型的格式良好,則此類型為 Alloc::size_type ;否則,此類型為 make_unsigned<difference_type>::type 。 |
value_type |
這個類型是 Alloc::value_type 的同義字。 |
void_pointer |
如果該類型的格式良好,則此類型為 Alloc::void_pointer ;否則,此類型為 pointer_traits<pointer>::rebind<void> 。 |
靜態方法
下列靜態方法會在指定的配置器參數上呼叫對應方法。
名稱 | 描述 |
---|---|
allocate | 靜態方法,使用指定的配置器參數來配置記憶體。 |
construct | 靜態方法,使用指定的配置器來建構物件。 |
deallocate | 靜態方法,使用指定的配置器來解除配置指定數目的物件。 |
destroy | 靜態方法,使用指定的配置器在物件上呼叫解構函式,而不解除配置其記憶體。 |
max_size | 靜態方法,使用指定的配置器來決定可配置的物件數目上限。 |
select_on_container_copy_construction | 靜態方法,可在指定的配置器上呼叫 select_on_container_copy_construction 。 |
分配
靜態方法,使用指定的配置器參數來配置記憶體。
static pointer allocate(Alloc& al, size_type count);
static pointer allocate(Alloc& al, size_type count,
typename allocator_traits<void>::const_pointer* hint);
參數
鋁
配置器物件。
計數
要配置的元素數。
提示
const_pointer
,可找出要求之前所配置物件的位址,來協助配置器物件符合儲存要求。 Null 指標視為沒有提示。
傳回值
每個方法都會傳回所配置物件的指標。
第一個靜態方法會傳回 al.allocate(count)
。
如果該運算式的格式良好,則第二個方法會傳回 al.allocate(count, hint)
;否則會傳回 al.allocate(count)
。
建構
靜態方法,使用指定的配置器來建構物件。
template <class Uty, class Types>
static void construct(Alloc& al, Uty* ptr, Types&&... args);
參數
鋁
配置器物件。
ptr
要建構物件之位置的指標。
args
傳遞給物件建構函式的引數清單。
備註
如果該運算式的格式良好,則靜態成員函式會呼叫 al.construct(ptr, args...)
;否則會評估 ::new (static_cast<void *>(ptr)) Uty(std::forward<Types>(args)...)
。
取消配置
靜態方法,使用指定的配置器來解除配置指定數目的物件。
static void deallocate(Alloc al,
pointer ptr,
size_type count);
參數
鋁
配置器物件。
ptr
要解除配置之物件的起始位置指標。
計數
要解除配置的物件數目。
備註
此方法會呼叫 al.deallocate(ptr, count)
。
這個方法不會擲回任何項目。
終結
靜態方法,使用指定的配置器在物件上呼叫解構函式,而不解除配置其記憶體。
template <class Uty>
static void destroy(Alloc& al, Uty* ptr);
參數
鋁
配置器物件。
ptr
物件位置的指標。
備註
如果該運算式的格式良好,則此方法會呼叫 al.destroy(ptr)
;否則會評估 ptr->~Uty()
。
max_size
靜態方法,使用指定的配置器來決定可配置的物件數目上限。
static size_type max_size(const Alloc& al);
參數
鋁
配置器物件。
備註
如果該運算式的格式良好,則此方法會傳回 al.max_size()
;否則會傳回 numeric_limits<size_type>::max()
。
select_on_container_copy_construction
靜態方法,可在指定的配置器上呼叫 select_on_container_copy_construction
。
static Alloc select_on_container_copy_construction(const Alloc& al);
參數
鋁
配置器物件。
傳回值
如果該類型格式良好,這個方法會傳 al.select_on_container_copy_construction()
回 ,否則會傳 回al。
備註
此方法用來在建構複製相關聯的容器時指定配置器。