std::multiset
является ассоциативным контейнером, содержащим отсортированное множество объектов типа Key. В отличие от set, допускаются множественные ключи с эквивалентными значениями. Сортировка выполняется с использованием функции сравнения ключей Compare. Операции поиска, вставки и удаления имеют логарифмическую сложность.
Везде, где стандартная библиотека использует требования
Compare
, эквивалентность определяется с использованием отношения эквивалентности, как описано в
Compare
. В упрощённых терминах, два объекта
a
и
b
считаются эквивалентными, если ни один из них не меньше другого:
!
comp
(
a, b
)
&&
!
comp
(
b, a
)
.
Порядок элементов, которые сравниваются как эквивалентные, соответствует порядку вставки и не изменяется.
Все функции-члены
std::multiset
являются
constexpr
: возможно создавать и использовать объекты
std::multiset
при вычислении константного выражения.
Однако объекты
std::multiset
обычно не могут быть
constexpr
, поскольку любая динамически выделенная память должна быть освобождена в том же вычислении константного выражения.
Типы-члены
iterator
и
const_iterator
могут быть псевдонимами одного и того же типа. Это означает, что определение пары перегруженных функций, использующих эти два типа в качестве типов параметров, может нарушать
Правило Одного Определения
. Поскольку
iterator
конвертируется в
const_iterator
, вместо этого будет работать единственная функция с параметром типа
const_iterator
.