次の方法で共有


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> インスタンス aallocator_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 の場合は同期フィルター Syncdeallocate(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;

関連項目

<allocators>