Класс allocator_traits
Шаблон класса описывает объект, который дополняет тип распределителя. Тип распределителя — это любой тип, описывающий объект allocator, который используется для управления выделенной памятью. В частности, для любого типа распределителя Alloc
можно использовать allocator_traits<Alloc>
, чтобы определить все сведения, необходимые контейнеру с распределителем. Дополнительные сведения см. в разделе Класс allocator.
Синтаксис
template <class Alloc>
class allocator_traits;
Участники
Определения типов
Имя | Описание |
---|---|
allocator_type |
Этот тип является синонимом для параметра-шаблона Alloc . |
const_pointer |
Этот тип — Alloc::const_pointer , если он правильно сформирован; в противном случае этот тип — pointer_traits<pointer>::rebind<const value_type> . |
const_void_pointer |
Этот тип — Alloc::const_void_pointer , если он правильно сформирован; в противном случае этот тип — pointer_traits<pointer>::rebind<const void> . |
difference_type |
Этот тип — Alloc::difference_type , если он правильно сформирован; в противном случае этот тип — pointer_traits<pointer>::difference_type . |
pointer |
Этот тип — Alloc::pointer , если он правильно сформирован; в противном случае этот тип — value_type * . |
propagate_on_container_copy_assignment |
Этот тип — Alloc::propagate_on_container_copy_assignment , если он правильно сформирован; в противном случае этот тип — false_type . |
propagate_on_container_move_assignment |
Этот тип — Alloc::propagate_on_container_move_assignment , если он правильно сформирован; в противном случае этот тип — false_type . Если тип содержит значение true, контейнер с поддержкой распределителя копирует его сохраненный распределитель для назначения перемещения. |
propagate_on_container_swap |
Этот тип — Alloc::propagate_on_container_swap , если он правильно сформирован; в противном случае этот тип — false_type . Если тип содержит значение true, контейнер с поддержкой распределителя копирует его сохраненный распределитель в перестановку. |
size_type |
Этот тип — Alloc::size_type , если он правильно сформирован; в противном случае этот тип — make_unsigned<difference_type>::type . |
value_type |
Этот тип является синонимом Alloc::value_type . |
void_pointer |
Этот тип — Alloc::void_pointer , если он правильно сформирован; в противном случае этот тип — pointer_traits<pointer>::rebind<void> . |
Статические методы
Следующие статические методы вызывают соответствующий метод в указанном параметре распределителя.
Имя | Описание |
---|---|
allocate | Статический метод, который выделяет память с помощью указанного параметра распределителя. |
construct | Статический метод, который используется указанным распределителем для создания объекта. |
deallocate | Статический метод, который используется указанным распределителем для освобождения указанного количества объектов. |
destroy | Статический метод, который используется указанным распределителем для вызова деструктора в объекте без освобождения его памяти. |
max_size | Статический метод, который используется указанным распределителем, чтобы определить максимальное число объектов, которые могут быть распределены. |
select_on_container_copy_construction | Статический метод, который вызывает select_on_container_copy_construction в указанном распределителе. |
распределить
Статический метод, который выделяет память с помощью указанного параметра распределителя.
static pointer allocate(Alloc& al, size_type count);
static pointer allocate(Alloc& al, size_type count,
typename allocator_traits<void>::const_pointer* hint);
Параметры
Аль
Объект распределителя.
count
Число элементов для распределения.
подсказка
const_pointer
, который может помочь объекту allocator удовлетворить запрос хранилища, найдя адрес выделенного объекта до запроса. Пустой указатель рассматривается как отсутствие подсказки.
Возвращаемое значение
Каждый метод возвращает указатель на выделенный объект.
Первый статический метод возвращает al.allocate(count)
.
Второй метод возвращает al.allocate(count, hint)
, если это выражение правильно сформировано; в противном случае возвращается al.allocate(count)
.
construct
Статический метод, который используется указанным распределителем для создания объекта.
template <class Uty, class Types>
static void construct(Alloc& al, Uty* ptr, Types&&... args);
Параметры
Аль
Объект распределителя.
ptr
Указатель места, в котором должен создаваться объект.
args
Список аргументов, передаваемый в конструктор объекта.
Замечания
Эта статическая функция-член вызывает al.construct(ptr, args...)
, если выражение правильно сформировано; в противном случае оно оценивается как ::new (static_cast<void *>(ptr)) Uty(std::forward<Types>(args)...)
.
deallocate
Статический метод, который используется указанным распределителем для освобождения указанного количества объектов.
static void deallocate(Alloc al,
pointer ptr,
size_type count);
Параметры
Аль
Объект распределителя.
ptr
Указатель на начальное расположение освобождаемых объектов.
count
Количество освобождаемых объектов.
Замечания
Этот метод вызывает al.deallocate(ptr, count)
.
Этот метод ничего не создает.
destroy
Статический метод, который используется указанным распределителем для вызова деструктора в объекте без освобождения его памяти.
template <class Uty>
static void destroy(Alloc& al, Uty* ptr);
Параметры
Аль
Объект распределителя.
ptr
Указатель на расположение объекта.
Замечания
Этот метод вызывает al.destroy(ptr)
, если выражение правильно сформировано; в противном случае оно оценивается как ptr->~Uty()
.
max_size
Статический метод, который используется указанным распределителем, чтобы определить максимальное число объектов, которые могут быть распределены.
static size_type max_size(const Alloc& al);
Параметры
Аль
Объект распределителя.
Замечания
Этот метод возвращает al.max_size()
, если это выражение правильно сформировано; в противном случае возвращается numeric_limits<size_type>::max()
.
select_on_container_copy_construction
Статический метод, который вызывает select_on_container_copy_construction
в указанном распределителе.
static Alloc select_on_container_copy_construction(const Alloc& al);
Параметры
Аль
Объект распределителя.
Возвращаемое значение
Этот метод возвращает значение al.select_on_container_copy_construction()
, если этот тип хорошо сформирован; в противном случае он возвращает значение al.
Замечания
Этот метод используется для указания распределителя при создании копии связанного контейнера.