◐ Shell
clean mode source ↗

std::multiset — cppreference.com

Материал из cppreference.com

<tbody> </tbody>

Определено в заголовочном файле <set>

template< class Key, class Compare = std::less<Key>, class Allocator = std::allocator<Key> > class multiset;

(1)

namespace pmr { template< class Key, class Compare = std::less<Key> > using multiset = std::multiset<Key, Compare, std::pmr::polymorphic_allocator<Key>>; }

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

std::multiset это ассоциативный контейнер, который содержит отсортированный набор объектов типа Key. В отличие от std::set, в multiset допускаются ключи с эквивалентными значениями. Сортировка осуществляется с помощью функции сравнения ключей Compare. Операции поиска, удаления и вставки имеют логарифмическую сложность.

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

Порядок эквивалентных друг другу элементов определяется очерёдностью их вставки и не меняется.

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

{{tr|std::multiset соответствует требованиям Container, AllocatorAwareContainer, AssociativeContainer and ReversibleContainer.

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

Типы-элементы

Функции-элементы

создаёт multiset
(public функция-элемент) [править]
уничтожает multiset
(public функция-элемент) [править]
присваивает значения контейнеру
(public функция-элемент) [править]
возвращает связанный аллокатор
(public функция-элемент) [править]
Итераторы
возвращает итератор на начало
(public функция-элемент) [править]

(C++11)

возвращает итератор на конец
(public функция-элемент) [править]
возвращает обратный итератор на начало
(public функция-элемент) [править]
возвращает обратный итератор на конец
(public функция-элемент) [править]
Ёмкость
проверяет, пуст ли контейнер
(public функция-элемент) [править]
возвращает количество элементов
(public функция-элемент) [править]
возвращает максимально возможное количество элементов
(public функция-элемент) [править]
Модификаторы
очищает содержимое
(public функция-элемент) [править]
вставляет элементы или узлы (начиная с C++17)
(public функция-элемент) [править]
вставляет ряд элементов
(public функция-элемент) [править]

(C++11)

создаёт элемент на месте
(public функция-элемент) [править]
создаёт элементы на месте, используя подсказку
(public функция-элемент) [править]
удаляет элементы
(public функция-элемент) [править]
обменивает содержимое
(public функция-элемент) [править]

(C++17)

извлекает узлы из контейнера
(public функция-элемент) [править]

(C++17)

сливает с узлами из другого контейнера
(public функция-элемент) [править]
Поиск
возвращает количество элементов, соответствующих определённому ключу
(public функция-элемент) [править]
ищет элемент с определённым ключом
(public функция-элемент) [править]

(C++20)

проверяет, содержит ли контейнер элемент с определённым ключом
(public функция-элемент) [править]
возвращает диапазон элементов, соответствующих определённому ключу
(public функция-элемент) [править]
возвращает итератор на первый элемент не меньший, чем заданный ключ
(public функция-элемент) [править]
возвращает итератор на первый элемент больший, чем заданный ключ
(public функция-элемент) [править]
Наблюдатели
возвращает функцию, сравнивающую ключи
(public функция-элемент) [править]
возвращает функцию, которая сравнивает ключи в объектах типа value_type
(public функция-элемент) [править]

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

Примечание

Типы элементы iterator и const_iterator могут быть псевдонимами одного и того же типа. Это означает, что определение пары перегруженных функций с использованием этих двух типов в качестве типов параметров может нарушить Правило Одного Определения. Поскольку iterator можно преобразовать в const_iterator, будет работать одна функция с типом параметра const_iterator.

Макрос тест функциональности Значение Стандарт Комментарий
__cpp_lib_containers_ranges 202202L (C++23) Создание и вставка диапазонов для контейнеров

Пример

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

Следующие изменения поведения были применены с обратной силой к ранее опубликованным стандартам C++:

Номер Применён Поведение в стандарте Корректное поведение
LWG 103 C++98 итератор позволяет модифицировать ключи итератор сделан константным
LWG 230 C++98 Key не обязательно должен быть CopyConstructible
(ключ типа Key может быть не создан)
Key также должен быть CopyConstructible