Namespaces
Variants

std:: allocator_traits

From cppreference.net
Memory management library
( exposition only* )
Allocators
Uninitialized memory algorithms
Constrained uninitialized memory algorithms
Memory resources
Uninitialized storage (until C++20)
( until C++20* )
( until C++20* )
( until C++20* )

Garbage collector support (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
Определено в заголовочном файле <memory>
template < class Alloc >
struct allocator_traits ;
(начиная с C++11)

Шаблон класса allocator_traits предоставляет стандартизированный способ доступа к различным свойствам Аллокаторов . Стандартные контейнеры и другие компоненты стандартной библиотеки обращаются к аллокаторам через этот шаблон.

Можно использовать любой классовый тип в качестве аллокатора, при условии что предоставленная пользователем специализация std::allocator_traits реализует всю необходимую функциональность.

(until C++23)

Программа, которая объявляет явную или частичную специализацию std::allocator_traits , является некорректной, диагностика не требуется.

(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 предоставлен

Смотрите также

контейнер, использующий аллокатор; использование связанных характеристик (например, propagate_on_container_swap )
(именованное требование)
аллокатор по умолчанию
(шаблон класса)
реализует многоуровневый аллокатор для многоуровневых контейнеров
(шаблон класса)
предоставляет информацию о типах, подобных указателям
(шаблон класса)