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>
執行個體 a
,allocator_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;