Namespaces
Variants

std:: multiset

From cppreference.net
Определено в заголовочном файле <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. В отличие от set, допускаются множественные ключи с эквивалентными значениями. Сортировка выполняется с использованием функции сравнения ключей Compare. Операции поиска, вставки и удаления имеют логарифмическую сложность.

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

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

(since C++11)

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

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

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

(since C++26)

Содержание

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

Типы членов

Тип Определение
key_type Key
value_type Key
size_type Беззнаковый целочисленный тип (обычно std::size_t )
difference_type Знаковый целочисленный тип (обычно std::ptrdiff_t )
key_compare Compare
value_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 , представляющая узел контейнера

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

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

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

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

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

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

Примечания

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

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

Пример

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

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

DR Applied to Behavior as published Correct behavior
LWG 103 C++98 iterator allows modification of keys iterator made constant
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

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

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