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á *this
se , 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 == 1
jinak 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;