std:: allocator_traits
|
Определено в заголовочном файле
<memory>
|
||
|
template
<
class
Alloc
>
struct allocator_traits ; |
(начиная с C++11) | |
Шаблон класса
allocator_traits
предоставляет стандартизированный способ доступа к различным свойствам
Аллокаторов
. Стандартные контейнеры и другие компоненты стандартной библиотеки обращаются к аллокаторам через этот шаблон.
|
Можно использовать любой классовый тип в качестве аллокатора, при условии что предоставленная пользователем специализация
|
(until C++23) |
|
Программа, которая объявляет явную или частичную специализацию
|
(since C++23) |
Стандартный, неспециализированный,
std::allocator_traits
содержит следующие члены:
Содержание |
Типы членов
| Тип | Определение |
allocator_type
|
Alloc
|
value_type
|
Alloc::value_type
|
pointer
|
Alloc::pointer
если присутствует, иначе
value_type*
|
const_pointer
|
Alloc::const_pointer
если присутствует, иначе
std::
pointer_traits
<
pointer
>
::
rebind
<
const
value_type
>
|
void_pointer
|
Alloc::void_pointer
если присутствует, иначе
std::
pointer_traits
<
pointer
>
::
rebind
<
void
>
|
const_void_pointer
|
Alloc::const_void_pointer
если присутствует, иначе
std::
pointer_traits
<
pointer
>
::
rebind
<
const
void
>
|
difference_type
|
Alloc::difference_type
если присутствует, иначе
std::
pointer_traits
<
pointer
>
::
difference_type
|
size_type
|
Alloc::size_type
если присутствует, иначе
std::
make_unsigned
<
difference_type
>
::
type
|
propagate_on_container_copy_assignment
|
Alloc::propagate_on_container_copy_assignment
если присутствует, иначе
std::false_type
|
propagate_on_container_move_assignment
|
Alloc::propagate_on_container_move_assignment
если присутствует, иначе
std::false_type
|
propagate_on_container_swap
|
Alloc::propagate_on_container_swap
если присутствует, иначе
std::false_type
|
is_always_equal
|
Alloc::is_always_equal
если присутствует, иначе
std::
is_empty
<
Alloc
>
::
type
|
Шаблоны псевдонимов членов
| Тип | Определение |
rebind_alloc<T>
|
Alloc::rebind<T>::other
если присутствует, иначе
SomeAllocator<T, Args>
если данный
Alloc
имеет форму
SomeAllocator
<
U, Args
>
, где
Args
представляет ноль или более
аргументов типа
|
rebind_traits<T>
|
std :: allocator_traits < rebind_alloc < T >> |
Функции-члены
|
[static]
|
выделяет неинициализированную память с использованием аллокатора
(public static member function) |
|
[static]
(C++23)
|
выделяет память размером не менее запрошенного через аллокатор
(public static member function) |
|
[static]
|
освобождает память с использованием аллокатора
(public static member function) |
|
[static]
|
конструирует объект в выделенной памяти
(function template) |
|
[static]
|
уничтожает объект, хранящийся в выделенной памяти
(function template) |
|
[static]
|
возвращает максимальный размер объекта, поддерживаемый аллокатором
(public static member function) |
|
получает аллокатор для использования после копирования стандартного контейнера
(public static member function) |
Отчеты о дефектах
Следующие отчеты об изменениях поведения, влияющие на дефекты, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Применяется к | Поведение в опубликованной версии | Корректное поведение |
|---|---|---|---|
| LWG 2108 | C++11 | не было способа показать, что аллокатор не имеет состояния |
is_always_equal
предоставлен
|
Смотрите также
|
(C++11)
|
контейнер, использующий аллокатор; использование связанных характеристик (например,
propagate_on_container_swap
)
(именованное требование) |
|
аллокатор по умолчанию
(шаблон класса) |
|
|
(C++11)
|
реализует многоуровневый аллокатор для многоуровневых контейнеров
(шаблон класса) |
|
(C++11)
|
предоставляет информацию о типах, подобных указателям
(шаблон класса) |