allocator_base — Klasa
Definiuje klasę podstawową i typowe funkcje potrzebne do utworzenia alokatora zdefiniowanego przez użytkownika na podstawie filtru synchronizacji.
Składnia
template <class Type, class Sync>
class allocator_base
Parametry
Type
Typ elementów przydzielonych przez alokator.
Synchronizować
Zasady synchronizacji dla alokatora, który jest klasą sync_none, klasą sync_per_container, klasą sync_per_thread lub klasą sync_shared.
Konstruktory
Konstruktor | opis |
---|---|
allocator_base | Tworzy obiekt typu allocator_base . |
Typedefs
Nazwa typu | opis |
---|---|
const_pointer | Typ, który zapewnia stały wskaźnik do typu obiektu zarządzanego przez alokator. |
const_reference | Typ, który zapewnia stałe odwołanie do typu obiektu zarządzanego przez alokator. |
difference_type | Podpisany typ całkowity, który może reprezentować różnicę między wartościami wskaźników do typu obiektu zarządzanego przez alokator. |
wskaźnik | Typ, który dostarcza wskaźnik do typu obiektu zarządzanego przez alokator. |
odniesienie | Typ, który zawiera odwołanie do typu obiektu zarządzanego przez alokator. |
size_type | Niepodpisany typ całkowity, który może reprezentować długość dowolnej sekwencji, którą może przydzielić obiekt typu allocator_base . |
value_type | Typ zarządzany przez alokator. |
Funkcje składowe
Funkcja składowa | opis |
---|---|
_Charalloc | Przydziela magazyn dla tablicy typu char . |
_Chardealloc | Zwalnia magazyn dla tablicy zawierającej elementy typu char . |
adres | Znajduje adres obiektu, którego wartość jest określona. |
allocate | Przydziela blok pamięci wystarczająco duży, aby przechowywać co najmniej określoną liczbę elementów. |
konstruować | Konstruuje określony typ obiektu pod określonym adresem zainicjowanym przy użyciu określonej wartości. |
Deallocate | Zwalnia określoną liczbę obiektów z magazynu rozpoczynającego się na określonej pozycji. |
niszczyć | Wywołuje destruktor obiektów bez cofnięcia przydziału pamięci, w której był przechowywany obiekt. |
max_size | Zwraca liczbę elementów typu Typ , które mogą zostać przydzielone przez obiekt alokatora klas przed użyciem wolnej pamięci. |
Wymagania
Nagłówek:<alokatory>
Przestrzeń nazw: stdext
allocator_base::_Charalloc
Przydziela magazyn dla tablicy typu char
.
char *_Charalloc(size_type count);
Parametry
count
Liczba elementów w tablicy do przydzielenia.
Wartość zwracana
Wskaźnik do przydzielonego obiektu.
Uwagi
Ta funkcja składowa jest używana przez kontenery podczas kompilatora, który nie może skompilować ponownie powiązania. Implementuje _Charalloc
on alokator zdefiniowany przez użytkownika, zwracając wynik wywołania funkcji allocate
filtru synchronizacji.
allocator_base::_Chardealloc
Zwalnia magazyn dla tablicy zawierającej elementy typu char
.
void _Chardealloc(void* ptr, size_type count);
Parametry
ptr
Wskaźnik do pierwszego obiektu, który ma zostać cofnięty z magazynu.
count
Liczba obiektów do cofnięcia przydziału z magazynu.
Uwagi
Ta funkcja składowa jest używana przez kontenery podczas kompilatora, który nie może skompilować ponownie powiązania. Implementuje _Chardealloc
on alokator zdefiniowany przez użytkownika przez wywołanie deallocate
funkcji filtru synchronizacji. Wskaźnik ptr musi być wcześniej zwracany przez wywołanie _Charalloc
metody dla obiektu alokatora, który porównuje wartość równą *this
, przydzielając obiekt tablicy o tym samym rozmiarze i typie. _Chardealloc
nigdy nie zgłasza wyjątku.
allocator_base::address
Znajduje adres obiektu, którego wartość jest określona.
pointer address(reference val);
const_pointer address(const_reference val);
Parametry
Val
Wartość const lub nonconst obiektu, którego adres jest wyszukiwany.
Wartość zwracana
Wskaźnik const lub nonconst do obiektu znalezionego odpowiednio, const lub nonconst wartości.
Uwagi
Ta funkcja składowa jest implementowana dla alokatora zdefiniowanego przez użytkownika przez zwrócenie elementu &val
.
allocator_base::przydziel
Przydziela blok pamięci wystarczająco duży, aby przechowywać co najmniej określoną liczbę elementów.
template <class Other>
pointer allocate(size_type _Nx, const Other* _Hint = 0);
pointer allocate(size_type _Nx);
Parametry
_Nx
Liczba elementów w tablicy do przydzielenia.
_Aluzja
Ten parametr jest ignorowany.
Wartość zwracana
Wskaźnik do przydzielonego obiektu.
Uwagi
Funkcja składowa implementuje alokację pamięci dla alokatora zdefiniowanego przez użytkownika, zwracając wynik wywołania allocate
funkcji filtru synchronizacji typu *
, jeśli _Nx == 1
w przeciwnym razie zwraca wynik wywołania operator new(_Nx * sizeof(Type))
rzutowania na typ Typ *
.
allocator_base::allocator_base
Tworzy obiekt typu allocator_base
.
allocator_base();
template <class Other>
allocator_base(const allocator_base<Other, Sync>& right);
Parametry
Prawy
Obiekt alokatora do skopiowania.
Uwagi
Pierwszy konstruktor tworzy wystąpienie allocator_base . Drugi konstruktor konstruuje allocator_base
wystąpienie tak, aby dla dowolnego allocator_base<Type, _Sync>
wystąpienia a
, allocator_base<Type, Sync>(allocator_base<Other, Sync>(a)) == a
.
allocator_base::const_pointer
Typ, który zapewnia stały wskaźnik do typu obiektu zarządzanego przez alokator.
typedef const Type *const_pointer;
allocator_base::const_reference
Typ, który zapewnia stałe odwołanie do typu obiektu zarządzanego przez alokator.
typedef const Type& const_reference;
allocator_base::construct
Konstruuje określony typ obiektu pod określonym adresem zainicjowanym przy użyciu określonej wartości.
void construct(pointer ptr, const Type& val);
Parametry
ptr
Wskaźnik do lokalizacji, w której ma zostać skonstruowany obiekt.
Val
Wartość, za pomocą której tworzony obiekt ma zostać zainicjowany.
Uwagi
Ta funkcja składowa jest implementowana dla alokatora zdefiniowanego przez użytkownika przez wywołanie metody new((void*)ptr Type(val)
.
allocator_base::d eallocate
Zwalnia określoną liczbę obiektów z magazynu rozpoczynającego się na określonej pozycji.
void deallocate(pointer ptr, size_type _Nx);
Parametry
ptr
Wskaźnik do pierwszego obiektu, który ma zostać cofnięty z magazynu.
_Nx
Liczba obiektów do cofnięcia przydziału z magazynu.
Uwagi
Ta funkcja składowa jest implementowana dla alokatora zdefiniowanego przez użytkownika przez wywołanie deallocate(ptr)
filtru Sync
synchronizacji, jeśli _Nx == 1
w przeciwnym razie wywołaj metodę operator delete(_Nx * ptr)
.
allocator_base::d estroy
Wywołuje destruktor obiektów bez cofnięcia przydziału pamięci, w której był przechowywany obiekt.
void destroy(pointer ptr);
Parametry
ptr
Wskaźnik wyznaczający adres obiektu do zniszczenia.
Uwagi
Ta funkcja składowa jest implementowana dla alokatora zdefiniowanego przez użytkownika przez wywołanie metody ptr->~Type()
.
allocator_base::d ifference_type
Podpisany typ całkowity, który może reprezentować różnicę między wartościami wskaźników do typu obiektu zarządzanego przez alokator.
typedef std::ptrdiff_t difference_type;
allocator_base::max_size
Zwraca liczbę elementów typu Type
, które mogą być przydzielane przez obiekt alokatora klas przed użyciem wolnej pamięci.
size_type max_size() const;
Wartość zwracana
Liczba elementów, które można przydzielić.
Uwagi
Ta funkcja składowa jest implementowana dla alokatora zdefiniowanego przez użytkownika, zwracając (size_t)-1 / sizeof(Type)
wartość , jeśli 0 < (size_t)-1 / sizeof(Type)
w przeciwnym razie 1
.
allocator_base::p inter
Typ, który dostarcza wskaźnik do typu obiektu zarządzanego przez alokator.
typedef Type *pointer;
allocator_base::reference
Typ, który zawiera odwołanie do typu obiektu zarządzanego przez alokator.
typedef Type& reference;
allocator_base::size_type
Niepodpisany typ całkowity, który może reprezentować długość dowolnej sekwencji, którą może przydzielić obiekt typu allocator_base
.
typedef std::size_t size_type;
allocator_base::value_type
Typ zarządzany przez alokator.
typedef Type value_type;