allocator_base クラス
同期フィルターからユーザー定義のアロケーターを作成するために必要な、基底クラスと共通の関数を定義します。
構文
template <class Type, class Sync>
class allocator_base
パラメーター
Type
アロケーターによって割り当てられた要素の型。
同期
アロケーターの同期ポリシー。sync_none クラス、sync_per_container クラス、sync_per_thread クラス、sync_shared クラスのいずれかです。
コンストラクター
コンストラクター | 説明 |
---|---|
allocator_base | allocator_base 型のオブジェクトを構築します。 |
Typedefs
型名 | 説明 |
---|---|
const_pointer | アロケーターによって管理されるオブジェクトの型に対する定数ポインターを提供する型。 |
const_reference | アロケーターによって管理されるオブジェクトの型に対する定数参照を提供する型。 |
difference_type | アロケーターによって管理されるオブジェクトの型に対するポインターの値の差を表すことができる符号付き整数型。 |
pointer | アロケーターによって管理されるオブジェクトの型に対するポインターを提供する型。 |
参照先 | アロケーターによって管理されるオブジェクトの型に対する参照を提供する型。 |
size_type | 型 allocator_base のオブジェクトが割り当てることができる、シーケンスの長さを表すことのできる符号なし整数型。 |
value_type | アロケーターによって管理される型。 |
メンバー関数
メンバー関数 | 説明 |
---|---|
_Charalloc | 型 char の配列のストレージを割り当てます。 |
_Chardealloc | 型 char の要素を含む配列のストレージを解放します。 |
address | 値が指定されたオブジェクトのアドレスを検索します。 |
allocate | 指定された要素数だけは格納できるメモリのブロックを割り当てます。 |
construct | 指定された値で初期化され、指定されたアドレスに配置される、指定された型のオブジェクトを構築します。 |
deallocate | 指定した位置で始まるストレージから、指定された数のオブジェクトを解放します。 |
destroy | オブジェクトが格納されたメモリの割り当てを解除せずに、オブジェクトのデストラクターを呼び出します。 |
max_size | 空きメモリがすべて使用される前にクラス アロケーター オブジェクトによって割り当てることのできる、Type 型の要素の数を返します。 |
要件
ヘッダー: <allocators>
名前空間: stdext
allocator_base::_Charalloc
型 char
の配列のストレージを割り当てます。
char *_Charalloc(size_type count);
パラメーター
count
割り当てられる配列内の要素の数。
戻り値
割り当てられたオブジェクトへのポインター。
解説
このメンバー関数は、再バインドをコンパイルできないコンパイラでコンパイルされるときにコンテナーによって使用されます。 この関数は、同期フィルターの allocate
関数への呼び出しの結果を返すことで、ユーザー定義のアロケーターに _Charalloc
を実装します。
allocator_base::_Chardealloc
型 char
の要素を含む配列のストレージを解放します。
void _Chardealloc(void* ptr, size_type count);
パラメーター
ptr
記憶域から割り当てを解除される最初のオブジェクトへのポインター。
count
記憶域から割り当てを解除されるオブジェクトの数。
解説
このメンバー関数は、再バインドをコンパイルできないコンパイラでコンパイルされるときにコンテナーによって使用されます。 この関数は、同期フィルターの deallocate
関数を呼び出すことで、ユーザー定義のアロケーターに _Chardealloc
を実装します。 ポインター ptr は、同じサイズと型の配列オブジェクトを割り当てる *this
と等しいことを比較するアロケーター オブジェクトに対し、_Charalloc
を呼び出すことで、既に返されているはずです。 _Chardealloc
は例外をスローしません。
allocator_base::address
値が指定されたオブジェクトのアドレスを検索します。
pointer address(reference val);
const_pointer address(const_reference val);
パラメーター
val
アドレスが検索対象となっているオブジェクトの const 値または nonconst 値。
戻り値
見つかった const 値または nonconst 値のそれぞれのオブジェクトに対する const ポインターまたは nonconst ポインター。
解説
このメンバー関数は、&val
を返すことで、ユーザー定義のアロケーターに実装されます。
allocator_base::allocate
指定された要素数だけは格納できるメモリのブロックを割り当てます。
template <class Other>
pointer allocate(size_type _Nx, const Other* _Hint = 0);
pointer allocate(size_type _Nx);
パラメーター
_Nx
割り当てられる配列内の要素の数。
_Hint
このパラメーターは無視されます。
戻り値
割り当てられたオブジェクトへのポインター。
解説
メンバー関数は、_Nx == 1
の場合、Type *
型の同期フィルターの allocate
関数への呼び出しの結果を返すことで、ユーザー定義のアロケーターにメモリ割り当てを実装します。それ以外の場合は、operator new(_Nx * sizeof(Type))
への呼び出しの結果を返すことで、Type *
型にキャストします。
allocator_base::allocator_base
allocator_base
型のオブジェクトを構築します。
allocator_base();
template <class Other>
allocator_base(const allocator_base<Other, Sync>& right);
パラメーター
right
コピーするアロケーター オブジェクト。
解説
1 つ目のコンストラクターは、allocator_base インスタンスを構築します。 2 番目のコンストラクターは、allocator_base<Type, _Sync>
インスタンス a
、allocator_base<Type, Sync>(allocator_base<Other, Sync>(a)) == a
などのいずれかに対し、allocator_base
インスタンスを構築します。
allocator_base::const_pointer
アロケーターによって管理されるオブジェクトの型に対する定数ポインターを提供する型。
typedef const Type *const_pointer;
allocator_base::const_reference
アロケーターによって管理されるオブジェクトの型に対する定数参照を提供する型。
typedef const Type& const_reference;
allocator_base::construct
指定された値で初期化され、指定されたアドレスに配置される、指定された型のオブジェクトを構築します。
void construct(pointer ptr, const Type& val);
パラメーター
ptr
オブジェクトが構築される場所へのポインター。
val
構築されるオブジェクトが初期化される値。
解説
このメンバー関数は、new((void*)ptr Type(val)
を呼び出すことで、ユーザー定義のアロケーターに実装されます。
allocator_base::d eallocate
指定した位置で始まるストレージから、指定された数のオブジェクトを解放します。
void deallocate(pointer ptr, size_type _Nx);
パラメーター
ptr
記憶域から割り当てを解除される最初のオブジェクトへのポインター。
_Nx
記憶域から割り当てを解除されるオブジェクトの数。
解説
このメンバー関数は、_Nx == 1
の場合は同期フィルター Sync
で deallocate(ptr)
を呼び出すことで、それ以外の場合は operator delete(_Nx * ptr)
を呼び出すことで、ユーザー定義のアロケーターに実装されます。
allocator_base::d estroy
オブジェクトが格納されたメモリの割り当てを解除せずに、オブジェクトのデストラクターを呼び出します。
void destroy(pointer ptr);
パラメーター
ptr
破棄するオブジェクトのアドレスを指定するポインター。
解説
このメンバー関数は、ptr->~Type()
を呼び出すことで、ユーザー定義のアロケーターに実装されます。
allocator_base::d ifference_type
アロケーターによって管理されるオブジェクトの型に対するポインターの値の差を表すことができる符号付き整数型。
typedef std::ptrdiff_t difference_type;
allocator_base::max_size
空きメモリがすべて使用される前にクラス アロケーター オブジェクトによって割り当てることのできる、型 Type
の要素の数を返します。
size_type max_size() const;
戻り値
割り当てることができる要素の数。
解説
このメンバー関数は、0 < (size_t)-1 / sizeof(Type)
の場合は (size_t)-1 / sizeof(Type)
を返すことで、それ以外は 1
を返すことで、ユーザー定義のアロケーターに実装されます。
allocator_base::p ointer
アロケーターによって管理されるオブジェクトの型に対するポインターを提供する型。
typedef Type *pointer;
allocator_base::reference
アロケーターによって管理されるオブジェクトの型に対する参照を提供する型。
typedef Type& reference;
allocator_base::size_type
型 allocator_base
のオブジェクトが割り当てることができる、シーケンスの長さを表すことのできる符号なし整数型。
typedef std::size_t size_type;
allocator_base::value_type
アロケーターによって管理される型。
typedef Type value_type;