Sdílet prostřednictvím


allocator_base – třída

Definuje základní třídu a běžné funkce potřebné k vytvoření uživatelem definovaného alokátoru z synchronizačního filtru.

Syntaxe

template <class Type, class Sync>
class allocator_base

Parametry

Typ
Typ prvků přidělených alokátorem.

Synchronizovat
Zásady synchronizace pro alokátor, což je třída sync_none, třída sync_per_container, třída sync_per_thread nebo třída sync_shared.

Konstruktory

Konstruktor Popis
allocator_base Vytvoří objekt typu allocator_base.

Typedefs

Název typu Popis
const_pointer Typ, který poskytuje konstantní ukazatel na typ objektu spravovaného alokátorem.
const_reference Typ, který poskytuje konstantní odkaz na typ objektu spravovaného alokátorem.
difference_type Celočíselný typ se signedm, který může představovat rozdíl mezi hodnotami ukazatelů na typ objektu spravovaného alokátorem.
ukazatel Typ, který poskytuje ukazatel na typ objektu spravovaného alokátorem.
odkaz Typ, který poskytuje odkaz na typ objektu spravovaného alokátorem.
size_type Celočíselný typ bez znaménka, který může představovat délku jakékoli sekvence, kterou může objekt typu allocator_base přidělit.
value_type Typ spravovaný alokátorem.

Členské funkce

Členová funkce Popis
_Charalloc Přidělí úložiště pro pole typu char.
_Chardealloc Uvolní úložiště pro pole obsahující prvky typu char.
adresa Vyhledá adresu objektu, jehož hodnota je zadána.
allocate Přidělí blok paměti dostatečně velký, aby ukládaly alespoň určitý zadaný počet prvků.
konstruovat Vytvoří konkrétní typ objektu na zadané adrese, která je inicializována se zadanou hodnotou.
uvolnit Uvolní zadaný počet objektů od úložiště počínaje zadanou pozicí.
zničit Volá destruktor objektů bez uvolnění paměti, ve které byl objekt uložen.
max_size Vrátí počet prvků typu Typ, které mohou být přiděleny objektem alokátoru třídy před uvolněním paměti.

Požadavky

Záhlaví:<alokátory>

Namespace: stdext

allocator_base::_Charalloc

Přidělí úložiště pro pole typu char.

char *_Charalloc(size_type count);

Parametry

count
Počet prvků v poli, které se mají přidělit.

Návratová hodnota

Ukazatel na přidělený objekt.

Poznámky

Tato členová funkce je používána kontejnery při kompilaci s kompilátorem, který nemůže zkompilovat rebind. Implementuje _Charalloc pro uživatelem definovaný alokátor vrácením výsledku volání allocate do funkce synchronizačního filtru.

allocator_base::_Chardealloc

Uvolní úložiště pro pole obsahující prvky typu char.

void _Chardealloc(void* ptr, size_type count);

Parametry

ptr
Ukazatel na první objekt, který se má uvolnit z úložiště.

count
Počet objektů, které se mají uvolnit z úložiště.

Poznámky

Tato členová funkce je používána kontejnery při kompilaci s kompilátorem, který nemůže zkompilovat rebind. Implementuje _Chardealloc pro uživatelem definovaný alokátor voláním deallocate funkce synchronizačního filtru. Ukazatel ptr musí být dříve vrácen voláním _Charalloc objektu alokátoru, který porovnává rovná *thisse , přidělení objektu pole se stejnou velikostí a typem. _Chardealloc nikdy nevyvolá výjimku.

allocator_base::address

Vyhledá adresu objektu, jehož hodnota je zadána.

pointer address(reference val);

const_pointer address(const_reference val);

Parametry

Val
Hodnota const nebo nonconst objektu, jehož adresa je hledána.

Návratová hodnota

Const nebo nonconst ukazatel na objekt nalezen, v uvedeném pořadí, const nebo nonconst hodnota.

Poznámky

Tato členová funkce je implementována pro uživatelem definovaný alokátor vrácením &val.

allocator_base::přidělení

Přidělí blok paměti dostatečně velký, aby ukládaly alespoň určitý zadaný počet prvků.

template <class Other>
pointer allocate(size_type _Nx, const Other* _Hint = 0);

pointer allocate(size_type _Nx);

Parametry

_Nx
Počet prvků v poli, které se mají přidělit.

_Náznak
Tento parametr je ignorován.

Návratová hodnota

Ukazatel na přidělený objekt.

Poznámky

Členová funkce implementuje přidělení paměti pro uživatelem definovaný alokátor vrácením výsledku volání allocate funkce synchronizačního filtru typu Typ * , pokud _Nx == 1jinak vrácením výsledku volání na operator new(_Nx * sizeof(Type)) typ typ *.

allocator_base::allocator_base

Vytvoří objekt typu allocator_base.

allocator_base();

template <class Other>
allocator_base(const allocator_base<Other, Sync>& right);

Parametry

Vpravo
Objekt alokátoru, který se má zkopírovat.

Poznámky

První konstruktor vytvoří instanci allocator_base . Druhý konstruktor vytvoří allocator_base instanci tak, aby pro jakoukoli allocator_base<Type, _Sync> instanci a, allocator_base<Type, Sync>(allocator_base<Other, Sync>(a)) == a.

allocator_base::const_pointer

Typ, který poskytuje konstantní ukazatel na typ objektu spravovaného alokátorem.

typedef const Type *const_pointer;

allocator_base::const_reference

Typ, který poskytuje konstantní odkaz na typ objektu spravovaného alokátorem.

typedef const Type& const_reference;

allocator_base::construct

Vytvoří konkrétní typ objektu na zadané adrese, která je inicializována se zadanou hodnotou.

void construct(pointer ptr, const Type& val);

Parametry

ptr
Ukazatel na umístění, kde má být objekt vytvořen.

Val
Hodnota, pomocí které má být objekt vytvořen, má být inicializován.

Poznámky

Tato členová funkce je implementována pro uživatelem definovaný alokátor voláním new((void*)ptr Type(val).

allocator_base::d eallocate

Uvolní zadaný počet objektů od úložiště počínaje zadanou pozicí.

void deallocate(pointer ptr, size_type _Nx);

Parametry

ptr
Ukazatel na první objekt, který se má uvolnit z úložiště.

_Nx
Počet objektů, které se mají uvolnit z úložiště.

Poznámky

Tato členová funkce je implementována pro uživatelem definovaný alokátor voláním deallocate(ptr) filtru Sync synchronizace pokud _Nx == 1, jinak voláním operator delete(_Nx * ptr).

allocator_base::d

Volá destruktor objektů bez uvolnění paměti, ve které byl objekt uložen.

void destroy(pointer ptr);

Parametry

ptr
Ukazatel označující adresu objektu, který má být zničen.

Poznámky

Tato členová funkce je implementována pro uživatelem definovaný alokátor voláním ptr->~Type().

allocator_base::d ifference_type

Celočíselný typ se signedm, který může představovat rozdíl mezi hodnotami ukazatelů na typ objektu spravovaného alokátorem.

typedef std::ptrdiff_t difference_type;

allocator_base::max_size

Vrátí počet prvků typu Type , které mohou být přiděleny objektem alokátoru třídy před uvolněním paměti.

size_type max_size() const;

Návratová hodnota

Počet prvků, které je možné přidělit.

Poznámky

Tato členová funkce je implementována pro uživatelem definovaný alokátor vrácením (size_t)-1 / sizeof(Type) , pokud 0 < (size_t)-1 / sizeof(Type), jinak 1.

allocator_base::p ointer

Typ, který poskytuje ukazatel na typ objektu spravovaného alokátorem.

typedef Type *pointer;

allocator_base::reference

Typ, který poskytuje odkaz na typ objektu spravovaného alokátorem.

typedef Type& reference;

allocator_base::size_type

Celočíselný typ bez znaménka, který může představovat délku jakékoli sekvence, kterou může objekt typu allocator_base přidělit.

typedef std::size_t size_type;

allocator_base::value_type

Typ spravovaný alokátorem.

typedef Type value_type;

Viz také

<alokátory>