Spec-Zone.ru › C++

std::allocator_traits

Определён в заголовке <memory>
template< class Alloc >
struct allocator_traits;
(начиная с C++11)

Шаблон класса allocator_traits предоставляет стандартизированный способ доступа к различным свойствам аллокаторов. Стандартные контейнеры и другие компоненты стандартной библиотеки обращаются к аллокаторам через этот шаблон, что позволяет использовать любой тип класса в качестве аллокатора, если предоставленная пользователем специализация std::allocator_traits реализует все необходимые функции.

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

(начиная с 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<constvalue_type>
void_pointer Alloc::void_pointer, если присутствует, иначе std::pointer_traits<pointer>::rebind<void>
const_void_pointer Alloc::const_void_pointer, если присутствует, иначе std::pointer_traits<pointer>::rebind<constvoid>
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>>

Функции-члены

allocate
[static]
выделяет неинициализированную память с помощью аллокатора
(открытая статическая функция-член)
allocate_at_least
[static] (C++23)
выделяет с помощью аллокатора память размером не меньше запрошенного
(открытая статическая функция-член)
deallocate
[static]
освобождает память с помощью аллокатора
(открытая статическая функция-член)
construct
[static]
создаёт объект в выделенной памяти
(шаблон функции)
destroy
[static]
уничтожает объект, хранящийся в выделенной памяти
(шаблон функции)
max_size
[static]
возвращает максимальный размер объекта, поддерживаемый аллокатором
(открытая статическая функция-член)
select_on_container_copy_construction
[static]
получает аллокатор, используемый после копирования стандартного контейнера
(открытая статическая функция-член)

Отчёты об ошибках

Следующие отчёты об ошибках, изменяющие поведение, были применены задним числом к ранее опубликованным стандартам C++.

DR Применён к Опубликованное поведение Правильное поведение
LWG 2108 C++11 не было способа указать, что аллокатор не имеет состояния is_always_equal предоставлен

См. также

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

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/memory/allocator_traits

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API