allocator_traits クラス
このクラス テンプレートは、allocator type を補足するオブジェクトを記述します。 アロケーターの型は、割り当てられた記憶域を管理するために使用されるアロケーター オブジェクトを記述する任意の型です。 具体的には、任意のアロケーターの型 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 を保持している場合、アロケーター対応のコンテナーは移動代入で格納されたアロケーターをコピーします。 |
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 を呼び出す静的メソッド。 |
allocate
特定のアロケーター パラメーターを使用してメモリを割り当てる静的メソッド。
static pointer allocate(Alloc& al, size_type count);
static pointer allocate(Alloc& al, size_type count,
typename allocator_traits<void>::const_pointer* hint);
パラメーター
al
アロケーター オブジェクト。
count
割り当てる要素数。
hint
記憶域への要求を、要求の前に割り当てられたオブジェクトのアドレスを見つけることで満たすことについて、アロケーター オブジェクトを支援できる const_pointer
。 Null ポインターは、hint なしとして扱われます。
戻り値
各メソッドは、割り当てられたオブジェクトへのポインターを返します。
最初の静的メソッドは al.allocate(count)
を返します。
2 番目のメソッドは、その式が整形式の場合は al.allocate(count, hint)
を返し、それ以外の場合は al.allocate(count)
を返します。
construct
オブジェクトの構築に指定されたアロケーターを使用する静的メソッド。
template <class Uty, class Types>
static void construct(Alloc& al, Uty* ptr, Types&&... args);
パラメーター
al
アロケーター オブジェクト。
ptr
オブジェクトが構築される場所へのポインター。
args
オブジェクト コンストラクターに渡される引数のリスト。
解説
静的メンバー関数は、その式が整形式の場合は al.construct(ptr, args...)
を呼び出し、それ以外の場合は ::new (static_cast<void *>(ptr)) Uty(std::forward<Types>(args)...)
を評価します。
deallocate
指定したアロケーターを使用して、指定数のオブジェクトの割り当てを解除する静的メソッド。
static void deallocate(Alloc al,
pointer ptr,
size_type count);
パラメーター
al
アロケーター オブジェクト。
ptr
割り当て解除されるオブジェクトの開始位置へのポインター。
count
割り当てを解除するオブジェクトの数。
解説
このメソッドは al.deallocate(ptr, count)
を呼び出します。
このメソッドは何もスローしません。
destroy
指定したアロケーターを使用して、メモリの割り当てを解除せず、オブジェクトでデストラクターを呼び出す静的メソッド。
template <class Uty>
static void destroy(Alloc& al, Uty* ptr);
パラメーター
al
アロケーター オブジェクト。
ptr
オブジェクトの場所へのポインター。
解説
このメソッドは、その式が整形式の場合は al.destroy(ptr)
を呼び出し、それ以外の場合は ptr->~Uty()
を評価します。
max_size
指定したアロケーターを使用して割り当てることができるオブジェクトの最大数を決定する静的メソッド。
static size_type max_size(const Alloc& al);
パラメーター
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
アロケーター オブジェクト。
戻り値
このメソッドは、その型が整形式の場合は al.select_on_container_copy_construction()
を返し、それ以外の場合は al を返します。
解説
このメソッドは、関連するコンテナーがコピー構築された場合に、アロケーターを指定するために使用されます。