共用方式為


allocator_base 類別

定義從同步處理篩選條件建立使用者定義的配置器時所需的基底類別和一般功能。

語法

template <class Type, class Sync>
class allocator_base

參數

類型
配置器所配置的元素類型。

Sync
配置器的同步處理原則,即 sync_none 類別sync_per_container 類別sync_per_thread 類別sync_shared 類別

建構函式

建構函式 描述
allocator_base 建構類型 allocator_base 的物件。

Typedefs

類型名稱 描述
const_pointer 一種類型,可提供配置器管理之物件類型的常數指標。
const_reference 一種類型,可提供配置器管理之物件類型的常數參考。
difference_type 帶正負號整數類型,可以表示配置器所管理的物件類型的指標值之間的差異。
pointer 一種類型,可提供配置器管理之物件類型的指標。
reference 一種類型,可提供配置器管理之物件類型的參考。
size_type 不帶正負號的整數型別,表示類型 allocator_base 物件可以配置的任何序列長度。
value_type 配置器所管理的類型。

成員函式

成員函數 描述
_Charalloc 為類型 char 的陣列配置儲存體。
_Chardealloc 為包含類型 char 之元素的陣列釋放儲存體。
address 尋找指定值所屬物件的位址。
allocate 配置夠大的記憶體區塊,至少儲存某些指定的項目數。
construct 在指定值初始化的指定位址上,建構特定類型的物件。
deallocate 從指定位置起算的儲存體中,釋放指定數目的物件。
destroy 呼叫物件解構函式,而不取消配置儲存物件的記憶體。
max_size 傳回在可用記憶體用完之前,無法由 allocator 類別的物件所配置之類型 Type 的元素數。

需求

Header: < allocators>

命名空間: stdext

allocator_base::_Charalloc

為類型 char 的陣列配置儲存體。

char *_Charalloc(size_type count);

參數

計數
要配置的陣列元素數目。

傳回值

所配置物件的指標。

備註

使用無法編譯重新系結的編譯器進行編譯時,容器會使用此成員函式。 它會實作使用者定義配置器的 _Charalloc,方法是傳回同步處理篩選之 allocate 函式呼叫的結果。

allocator_base::_Chardealloc

為包含類型 char 之元素的陣列釋放儲存體。

void _Chardealloc(void* ptr, size_type count);

參數

ptr
要從儲存體解除配置之第一個物件的指標。

計數
要從儲存空間解除配置的物件數目。

備註

使用無法編譯重新系結的編譯器進行編譯時,容器會使用此成員函式。 它會實作使用者定義配置器的 _Chardealloc,方法是呼叫同步處理篩選的 deallocate 函式。 之前必須已傳回指標 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
要複製的配置器物件。

備註

第一個建構函式會建構 allocator_base 執行個體。 第二個建構函式會建構 allocator_base 執行個體,因此適用於任何 allocator_base<Type, _Sync> 執行個體 aallocator_base<Type, Sync>(allocator_base<Other, Sync>(a)) == a

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;

另請參閱

<allocators>