Namespaces
Variants

std:: multimap

From cppreference.net
Определено в заголовочном файле <map>
template <

class Key,
class T,
class Compare = std:: less < Key > ,
class Allocator = std:: allocator < std:: pair < const Key, T >>

> class multimap ;
(1)
namespace pmr {

template <
class Key,
class T,
class Compare = std:: less < Key >
> using multimap = std :: multimap < Key, T, Compare,
std:: pmr :: polymorphic_allocator < std:: pair < const Key, T >>> ;

}
(2) (начиная с C++17)

std::multimap — это ассоциативный контейнер, содержащий отсортированный список пар ключ-значение, допускающий несколько записей с одинаковым ключом. Сортировка выполняется в соответствии с функцией сравнения Compare , применяемой к ключам. Операции поиска, вставки и удаления имеют логарифмическую сложность.

Итераторы std::multimap проходят элементы в неубывающем порядке ключей, где неубывание определяется сравнением, использованным при построении. То есть, для данных

  • m , std::multimap
  • it_l и it_r , разыменовываемые итераторы для m , причём it_l < it_r .

m. value_comp ( ) ( * it_r, * it_l ) == false (от наименьшего к наибольшему при использовании сравнения по умолчанию).

Порядок пар ключ-значение, чьи ключи сравниваются как эквивалентные, соответствует порядку вставки и не изменяется.

(since C++11)

Везде, где стандартная библиотека использует требования Compare , эквивалентность определяется с использованием отношения эквивалентности, как описано в Compare . В упрощённых терминах, два объекта a и b считаются эквивалентными, если ни один из них не меньше другого: ! comp ( a, b ) && ! comp ( b, a ) .

std::multimap удовлетворяет требованиям Container , AllocatorAwareContainer , AssociativeContainer и ReversibleContainer .

Все функции-члены std::multimap являются constexpr : возможно создавать и использовать объекты std::multimap при вычислении константного выражения.

Однако, объекты std::multimap обычно не могут быть constexpr , поскольку любая динамически выделенная память должна быть освобождена в том же вычислении константного выражения.

(since C++26)

Содержание

Параметры шаблона

Типы членов

Тип Определение
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

Allocator::pointer

(до C++11)

std:: allocator_traits < Allocator > :: pointer

(начиная с C++11)
const_pointer

Allocator::const_pointer

(до C++11)

std:: allocator_traits < Allocator > :: const_pointer

(начиная с C++11)
iterator LegacyBidirectionalIterator и ConstexprIterator (начиная с C++26) для value_type
const_iterator LegacyBidirectionalIterator и ConstexprIterator (начиная с C++26) для const value_type
reverse_iterator std:: reverse_iterator < iterator >
const_reverse_iterator std:: reverse_iterator < const_iterator >
node_type (начиная с C++17) специализация node handle , представляющая узел контейнера

Классы-члены

сравнивает объекты типа value_type
(класс)

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

конструирует multimap
(публичная функция-член)
уничтожает multimap
(public member function)
присваивает значения контейнеру
(public member function)
возвращает связанный аллокатор
(публичная функция-член)
Итераторы
возвращает итератор на начало
(публичная функция-член)
(C++11)
возвращает итератор на конец
(публичная функция-член)
возвращает обратный итератор на начало
(public member function)
(C++11)
возвращает обратный итератор на конец
(публичная функция-член)
Ёмкость
проверяет, является ли контейнер пустым
(публичная функция-член)
возвращает количество элементов
(публичная функция-член)
возвращает максимально возможное количество элементов
(публичная функция-член)
Модификаторы
очищает содержимое
(public member function)
вставляет элементы или узлы (since C++17)
(публичная функция-член)
вставляет диапазон элементов
(публичная функция-член)
(C++11)
создаёт элемент на месте
(публичная функция-член)
создаёт элементы на месте с использованием подсказки
(публичная функция-член)
удаляет элементы
(публичная функция-член)
обменивает содержимое
(public member function)
(C++17)
извлекает узлы из контейнера
(публичная функция-член)
(C++17)
объединяет узлы из другого контейнера
(публичная функция-член)
Поиск
возвращает количество элементов, соответствующих определённому ключу
(публичная функция-член)
находит элемент с указанным ключом
(публичная функция-член)
(C++20)
проверяет, содержит ли контейнер элемент с указанным ключом
(публичная функция-член)
возвращает диапазон элементов, соответствующих определённому ключу
(публичная функция-член)
возвращает итератор на первый элемент не меньший чем заданный ключ
(public member function)
возвращает итератор на первый элемент больший чем заданный ключ
(публичная функция-член)
Наблюдатели
возвращает функцию, которая сравнивает ключи
(публичная функция-член)
возвращает функцию, которая сравнивает ключи в объектах типа value_type
(публичная функция-член)

Функции, не являющиеся членами класса

(удалено в C++20) (удалено в C++20) (удалено в C++20) (удалено в C++20) (удалено в C++20) (C++20)
лексикографически сравнивает значения двух multimap контейнеров
(шаблон функции)
специализирует алгоритм std::swap
(шаблон функции)
удаляет все элементы, удовлетворяющие определённым критериям
(шаблон функции)

Руководства по выводу

(начиная с C++17)

Примечания

Макрос тестирования возможностей Значение Стандарт Функция
__cpp_lib_containers_ranges 202202L (C++23) Конструирование и вставка диапазонов для контейнеров
__cpp_lib_constexpr_map 202502L (C++26) constexpr std::multimap

Пример

Отчеты о дефектах

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

DR Applied to Behavior as published Correct behavior
LWG 230 C++98 Key was not required to be CopyConstructible
(a key of type Key might not be able to be constructed)
Key is also required to
be CopyConstructible

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

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