std::multimap
Определено в заголовочном файле <map>
|
||
template< class Key, |
(1) | |
namespace pmr { template< |
(2) | (начиная с C++17) |
std::multimap
это ассоциативный контейнер, содержащий отсортированный список пар ключ-значение, допускающий несколько записей с одним и тем же ключом. Сортировка производится с функцией сравнения Compare
, применяемой к ключам. Операции поиска, вставки и удаления имеют логарифмическую сложность.
Порядок пар ключ-значение, чьи ключи эквивалентны при сравнении, определяется очерёдностью их добавления и не меняется. |
(начиная с C++11) |
Везде, где стандартная библиотека использует требования Compare, эквивалентность определяется с помощью отношения эквивалентности, как описано в Compare. Говоря неточно, два объекта a и b считаются эквивалентными, если ни один из них не меньше, чем другой при сранении: !comp(a, b) && !comp(b, a).
std::multimap
соответствует требованиям Container
, AllocatorAwareContainer
, AssociativeContainer
и ReversibleContainer
.
Содержание |
[править] Параметры шаблона
Этот раздел не завершён Причина: Добавить описания параметров шаблона. |
[править] Типы-элементы
Тип-элемент | Объявление | ||||
key_type
|
Key
| ||||
mapped_type
|
T
| ||||
value_type
|
std::pair<const Key, T> | ||||
size_type
|
Беззнаковый целочисленный тип (обычно std::size_t) | ||||
difference_type
|
Знаковый целочисленный тип (обычно std::ptrdiff_t) | ||||
key_compare
|
Compare
| ||||
allocator_type
|
Allocator
| ||||
reference
|
value_type&
| ||||
const_reference
|
const value_type& | ||||
pointer
|
| ||||
const_pointer
|
| ||||
iterator
|
LegacyBidirectionalIterator в value_type
| ||||
const_iterator
|
LegacyBidirectionalIterator в const value_type | ||||
reverse_iterator
|
std::reverse_iterator<iterator> | ||||
const_reverse_iterator
|
std::reverse_iterator<const_iterator> | ||||
node_type (начиная с C++17)
|
специализация дескриптора узла, представляющая узел контейнера |
[править] Элементы класса
сравнивает объекты типа value_type (класс) |
[править] Функции-элементы
создаёт multimap (public функция-элемент) | |
уничтожает multimap (public функция-элемент) | |
присваивает значения контейнеру (public функция-элемент) | |
возвращает связанный аллокатор (public функция-элемент) | |
Итераторы | |
(C++11) |
возвращает итератор на начало (public функция-элемент) |
(C++11) |
возвращает итератор на конец (public функция-элемент) |
(C++11) |
возвращает обратный итератор на начало (public функция-элемент) |
(C++11) |
возвращает обратный итератор на конец (public функция-элемент) |
Вместимость | |
проверяет, пуст ли контейнер (public функция-элемент) | |
возвращает количество элементов (public функция-элемент) | |
возвращает максимально возможное количество элементов (public функция-элемент) | |
Модификаторы | |
очищает содержимое (public функция-элемент) | |
вставляет элементы или узлы (начиная с C++17) (public функция-элемент) | |
(C++23) |
вставляет ряд элементов (public функция-элемент) |
(C++11) |
создаёт элемент на месте (public функция-элемент) |
(C++11) |
создаёт элементы на месте, используя подсказку (public функция-элемент) |
удаляет элементы (public функция-элемент) | |
обменивает содержимое (public функция-элемент) | |
(C++17) |
извлекает узлы из контейнера (public функция-элемент) |
(C++17) |
сливает с узлами из другого контейнера (public функция-элемент) |
Поиск | |
возвращает количество элементов, соответствующих определённому ключу (public функция-элемент) | |
ищет элемент с определённым ключом (public функция-элемент) | |
(C++20) |
проверяет, содержит ли контейнер элемент с определённым ключом (public функция-элемент) |
возвращает диапазон элементов, соответствующих определённому ключу (public функция-элемент) | |
возвращает итератор на первый элемент не меньший, чем заданный ключ (public функция-элемент) | |
возвращает итератор на первый элемент больший, чем заданный ключ (public функция-элемент) | |
Наблюдение | |
возвращает функцию, сравнивающую ключи (public функция-элемент) | |
возвращает функцию, которая сравнивает ключи в объектах типа value_type (public функция-элемент) |
[править] Функции, не являющиеся элементами
(удалено в C++20)(удалено в C++20)(удалено в C++20)(удалено в C++20)(удалено в C++20)(C++20) |
лексикографически сравнивает значения в multimap (шаблон функции) |
специализация алгоритма std::swap (шаблон функции) | |
(C++20) |
стирает все элементы, соответствующие определённым критериям (шаблон функции) |
Принципы вывода |
(начиная с C++17) |
[править] Примечание
Макрос тест функциональности | Значение | Стандарт | Комментарий |
---|---|---|---|
__cpp_lib_containers_ranges |
202202L | (C++23) | Создание и вставка диапазонов для контейнеров |
[править] Пример
Этот раздел не завершён Причина: нет примера |
[править] Отчёты о дефектах
Следующие изменения поведения были применены с обратной силой к ранее опубликованным стандартам C++:
Номер | Применён | Поведение в стандарте | Корректное поведение |
---|---|---|---|
LWG 230 | C++98 | Key не обязательно должен быть CopyConstructible(ключ типа Key может быть не создан)
|
Key также должен быть CopyConstructible
|