次の方法で共有


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 を返します。

解説

このメソッドは、関連するコンテナーがコピー構築された場合に、アロケーターを指定するために使用されます。