allocator_base-Klasse
Definiert die Basisklasse und allgemeine Funktionen, die zum Erstellen einer benutzerdefinierten Zuweisung von einem Synchronisierungsfilter erforderlich sind.
Syntax
template <class Type, class Sync>
class allocator_base
Parameter
Typ
Der Elementtyp, die durch die Zuweisung zugeordnet wird.
Sync
Die Synchronisierungsrichtlinie für die Zuweisung: sync_none-Klasse, sync_per_container-Klasse, sync_per_thread-Klasse oder sync_shared-Klasse.
Konstruktoren
Konstruktor | Beschreibung |
---|---|
allocator_base | Konstruiert ein Objekt vom Typ allocator_base . |
TypeDefs
Typname | Beschreibung |
---|---|
const_pointer | Ein Typ, der einen konstanten Zeiger auf den Typ des Objekts bereitstellt, das von der Zuweisung verwaltet wird. |
const_reference | Ein Typ, der einen konstanten Verweis auf den Typ des Objekts bereitstellt, das von der Zuweisung verwaltet wird. |
difference_type | Ein ganzzahliger Typ mit Vorzeichen, der die Differenz zwischen Werten von Zeigern und dem Typ des Objekts, das von der Zuweisung verwaltet wird, darstellen kann. |
pointer | Ein Typ, der einen Zeiger auf den Typ des Objekts bereitstellt, das von der Zuweisung verwaltet wird. |
reference | Ein Typ, der einen Verweis auf den Typ des Objekts bereitstellt, das von der Zuweisung verwaltet wird. |
size_type | Ein nicht signierter Integraltyp, der die Länge einer beliebigen Sequenz darstellen kann, die ein Objekt vom Typ allocator_base zuordnen kann. |
value_type | Ein Typ, der von der Zuweisung verwaltet wird. |
Memberfunktionen
Memberfunktion | Beschreibung |
---|---|
_Charalloc | Ordnet einem Array des Typs char Speicherplatz zu. |
_Chardealloc | Gibt für das Array mit Elementen vom Typ char Speicherplatz frei. |
address | Sucht die Adresse eines Objekts, dessen Wert angegeben wird. |
allocate | Ordnet einen Speicherblock zu, der groß genug ist, um mindestens eine angegebene Anzahl von Elementen zu speichern. |
construct | Erstellt eine bestimmte Art von Objekt an einer bestimmten Adresse, die mit einem angegebenen Wert initialisiert wird. |
deallocate | Gibt eine angegebene Anzahl von Objekten im Speicher frei, beginnend an einer angegebenen Position. |
destroy | Ruft einen Objektdestruktor auf, ohne die Zuordnung des Speicherplatzes aufzuheben, an dem Objekt gespeichert wurde. |
max_size | Gibt die Anzahl der Elemente vom Typ Type zurück, die von einem Objekt der Klassenzuweisung zugeordnet werden konnten, bevor der freie Speicherplatz verbraucht ist. |
Anforderungen
Header:<allocators>
Namespace: stdext
allocator_base::_Charalloc
Ordnet einem Array des Typs char
Speicherplatz zu.
char *_Charalloc(size_type count);
Parameter
count
Die Anzahl der zuzuweisenden Elemente im Array
Rückgabewert
Zeiger auf das zugewiesene Objekt.
Hinweise
Diese Memberfunktion wird von Containern verwendet, wenn sie mit einem Compiler kompiliert werden, der nicht kompiliert werden kann. Es implementiert _Charalloc
für die benutzerdefinierte allocator-Klasse, indem es das Ergebnis eines Aufrufs an die Funktion allocate
des Synchronisationsfilters zurückgibt.
allocator_base::_Chardealloc
Gibt für das Array mit Elementen vom Typ char
Speicherplatz frei.
void _Chardealloc(void* ptr, size_type count);
Parameter
ptr
Ein Zeiger auf das erste Objekt, dessen Zuweisung zum Speicher aufgehoben werden soll.
count
Die Anzahl von Objekten, deren Zuweisung zum Speicherplatz aufgehoben werden soll.
Hinweise
Diese Memberfunktion wird von Containern verwendet, wenn sie mit einem Compiler kompiliert werden, der nicht kompiliert werden kann. Für die benutzerdefinierte allocator-Klasse implementiert es _Chardealloc
, indem es das Ergebnis eines Aufrufs an die Funktion deallocate
des Synchronisationsfilters zurückgibt. Der Zeiger ptr muss schon vorher für ein Zuweisungsobjekt, das gleich *this
ist,von einen Aufruf an _Charalloc
zurückgegeben worden sein, damit er ein Arrayobjekt der gleichen Größe und des gleichen Typs zuweisen kann. _Chardealloc
löst nie eine Ausnahme aus.
allocator_base::address
Sucht die Adresse eines Objekts, dessen Wert angegeben wird.
pointer address(reference val);
const_pointer address(const_reference val);
Parameter
val
Der konstante oder nicht konstante Wert des Objekts, nach dessen Adresse gesucht wird.
Rückgabewert
Ein konstanter oder nicht konstanter Zeiger auf ein Objekt mit konstantem bzw. nicht konstantem Wert.
Hinweise
Diese Memberfunktion wird für die benutzerdefinierte allocator-Klasse implementiert, indem &val
zurückgegeben wird.
allocator_base::zuweisung
Ordnet einen Speicherblock zu, der groß genug ist, um mindestens eine angegebene Anzahl von Elementen zu speichern.
template <class Other>
pointer allocate(size_type _Nx, const Other* _Hint = 0);
pointer allocate(size_type _Nx);
Parameter
_Nx
Die Anzahl der zuzuweisenden Elemente im Array
_Hint
Konvertiert die Zeichenfolgendarstellung einer Zahl in einem angegebenen Stil und einem kulturspezifischen Format in die entsprechende 32-Bit-Ganzzahl mit Vorzeichen.
Rückgabewert
Zeiger auf das zugewiesene Objekt.
Hinweise
Die Memberfunktion implementiert Speicherreservierung für die benutzerdefinierte allocator-Klasse, indem sie das Ergebnis eines Aufrufs an die Funktion allocate
des Synchronisationsfilters des Typs „type“ *
wenn _Nx == 1
zurückgibt; andernfalls indem sie das Ergebnis eines Aufrufs an den Cast operator new(_Nx * sizeof(Type))
des Typs „Type“ *
.
allocator_base::allocator_base
Konstruiert ein Objekt vom Typ allocator_base
.
allocator_base();
template <class Other>
allocator_base(const allocator_base<Other, Sync>& right);
Parameter
right
Das zu kopierende Zuweisungsobjekt.
Hinweise
Der erste Konstruktor erstellt eine allocator_base-Instanz. Der zweite Konstruktor erstellt eine allocator_base
-Instanz, so dass jede allocator_base<Type, _Sync>
-Instanz a
, allocator_base<Type, Sync>(allocator_base<Other, Sync>(a)) == a
.
allocator_base::const_pointer
Ein Typ, der einen konstanten Zeiger auf den Typ des Objekts bereitstellt, das von der Zuweisung verwaltet wird.
typedef const Type *const_pointer;
allocator_base::const_reference
Ein Typ, der einen konstanten Verweis auf den Typ des Objekts bereitstellt, das von der Zuweisung verwaltet wird.
typedef const Type& const_reference;
allocator_base::construct
Erstellt eine bestimmte Art von Objekt an einer bestimmten Adresse, die mit einem angegebenen Wert initialisiert wird.
void construct(pointer ptr, const Type& val);
Parameter
ptr
Ein Zeiger auf den Speicherort, in dem das Objekt erstellt werden soll.
val
Der Wert, mit dem das zu erstellende Objekt initialisiert werden soll.
Hinweise
Diese Memberfunktion wird für die benutzerdefinierte allocator-Klasse implementiert, indem new((void*)ptr Type(val)
aufgerufen wird.
allocator_base::d eallocate
Gibt eine angegebene Anzahl von Objekten im Speicher frei, beginnend an einer angegebenen Position.
void deallocate(pointer ptr, size_type _Nx);
Parameter
ptr
Ein Zeiger auf das erste Objekt, dessen Zuweisung zum Speicher aufgehoben werden soll.
_Nx
Die Anzahl von Objekten, deren Zuweisung zum Speicherplatz aufgehoben werden soll.
Hinweise
Die Memberfunktion wird für die benutzerdefinierte allocator-Klasse implementiert, indem deallocate(ptr)
im Synchronisationsfilter Sync
wenn _Nx == 1
aufgerufen wird; andernfalls Aufruf an operator delete(_Nx * ptr)
.
allocator_base::d estroy
Ruft einen Objektdestruktor auf, ohne die Zuordnung des Speicherplatzes aufzuheben, an dem Objekt gespeichert wurde.
void destroy(pointer ptr);
Parameter
ptr
Ein Zeiger, der die Adresse des zu zerstörenden Objekts angibt.
Hinweise
Diese Memberfunktion wird für die benutzerdefinierte allocator-Klasse implementiert, indem ptr->~Type()
aufgerufen wird.
allocator_base::d ifference_type
Ein ganzzahliger Typ mit Vorzeichen, der die Differenz zwischen Werten von Zeigern und dem Typ des Objekts, das von der Zuweisung verwaltet wird, darstellen kann.
typedef std::ptrdiff_t difference_type;
allocator_base::max_size
Gibt die Anzahl der Elemente vom Typ Type
zurück, die von einem Objekt der Klassenzuweisung zugeordnet werden konnten, bevor der freie Speicherplatz verbraucht ist.
size_type max_size() const;
Rückgabewert
Die Anzahl von Elementen, die zugewiesen werden konnten.
Hinweise
Diese Memberfunktion wird für die benutzerdefinierte allocator-Klasse implementiert, indem (size_t)-1 / sizeof(Type)
wenn 0 < (size_t)-1 / sizeof(Type)
zurückgegeben wird; andernfalls 1
.
allocator_base::p ointer
Ein Typ, der einen Zeiger auf den Typ des Objekts bereitstellt, das von der Zuweisung verwaltet wird.
typedef Type *pointer;
allocator_base::reference
Ein Typ, der einen Verweis auf den Typ des Objekts bereitstellt, das von der Zuweisung verwaltet wird.
typedef Type& reference;
allocator_base::size_type
Ein nicht signierter Integraltyp, der die Länge einer beliebigen Sequenz darstellen kann, die ein Objekt vom Typ allocator_base
zuordnen kann.
typedef std::size_t size_type;
allocator_base::value_type
Ein Typ, der von der Zuweisung verwaltet wird.
typedef Type value_type;