std::unordered_multimap
— это неупорядоченный ассоциативный контейнер, который поддерживает эквивалентные ключи (unordered_multimap может содержать несколько копий каждого значения ключа) и связывает значения другого типа с ключами. Класс unordered_multimap поддерживает однонаправленные итераторы. Поиск, вставка и удаление имеют в среднем постоянную сложность по времени.
Внутренне элементы не отсортированы в каком-либо определенном порядке, а организованы в сегменты (buckets). В какой сегмент помещается элемент, полностью зависит от хеша его ключа. Это обеспечивает быстрый доступ к отдельным элементам, поскольку после вычисления хеша он указывает на точный сегмент, в который помещен элемент.
Порядок итерации этого контейнера не обязан быть стабильным (так, например,
std::equal
нельзя использовать для сравнения двух
std::unordered_multimap
), за исключением того, что каждая группа элементов с
эквивалентными
ключами (которые сравниваются как равные с использованием
key_eq()
в качестве компаратора) образует непрерывный поддиапазон в порядке итерации, также доступный через
equal_range()
.
Все функции-члены
std::unordered_multimap
являются
constexpr
: возможно создавать и использовать объекты
std::unordered_multimap
при вычислении константного выражения.
Однако, объекты
std::unordered_multimap
обычно не могут быть
constexpr
, поскольку любая динамически выделенная память должна быть освобождена в том же вычислении константного выражения.
тип итератора, у которого типы категории, значения, разности, указателя и ссылочные типы совпадают с iterator. Этот итератор может использоваться для итерации по одной корзине, но не по всем корзинам
const_local_iterator
тип итератора, у которого типы категории, значения, разности, указателя и ссылочные типы совпадают с const_iterator. Этот итератор может использоваться для итерации по одной корзине, но не по всем корзинам