std::flat_multiset
Определено в заголовке <flat_set> | ||
|---|---|---|
template<
class Key,
class Compare = std::less<Key>,
class KeyContainer = std::vector<Key>
> class flat_multiset;
|
Flat multiset — это адаптер контейнера, предоставляющий функциональность ассоциативного контейнера, хранящего отсортированный набор объектов типа Key. В отличие от std::flat_set, допускаются несколько ключей с эквивалентными значениями. Сортировка выполняется с использованием функции сравнения ключей Compare.
Шаблон класса flat_multiset выступает в качестве оболочки для базового отсортированного контейнера, переданного как объект типа KeyContainer.
Всюду, где стандартная библиотека использует требования Compare, уникальность определяется с использованием отношения эквивалентности. Неформально, два объекта a и b считаются эквивалентными, если ни один из них не меньше другого: !comp(a, b) && !comp(b, a).
std::flat_multiset удовлетворяет требованиям Container, ReversibleContainer, необязательным требованиям к контейнерам и всем требованиям AssociativeContainer (включая логарифмическую сложность поиска), за исключением того, что:
- требования, относящиеся к узлам, не применяются,
- требования к инвалидации итераторов отличаются,
- сложность операций вставки и удаления линейная.
Flat multiset поддерживает большинство операций AssociativeContainer, использующих равные ключи.
Инвалидация итераторов
Параметры шаблона
| Key | - | Тип хранимых элементов. Программа некорректна, если Key не совпадает с типом KeyContainer::value_type. |
| Compare | - | Тип Compare, предоставляющий строгое слабое упорядочение. |
| KeyContainer | - | Тип базового SequenceContainer для хранения элементов. Итераторы такого контейнера должны удовлетворять требованиям LegacyRandomAccessIterator или моделировать random_access_iterator. Стандартные контейнеры |
Типы членов
| Тип члена | Определение |
|---|---|
container_type | KeyContainer |
key_type | Key |
value_type | Key |
key_compare | Compare |
value_compare | Compare |
reference | value_type& |
const_reference | const value_type& |
size_type | typename KeyContainer::size_type |
difference_type | typename KeyContainer::difference_type |
iterator | определённая реализацией LegacyRandomAccessIterator и random_access_iterator к value_type |
const_iterator | определённая реализацией LegacyRandomAccessIterator и random_access_iterator к const value_type |
reverse_iterator | std::reverse_iterator<iterator> |
const_reverse_iterator | std::reverse_iterator<const_iterator> |
Члены-объекты
| Имя члена | Определение |
|---|---|
c (private) | базовый контейнер container_type(только для иллюстрации*) |
compare (private) | объект-функция сравнения типа key_compare(только для иллюстрации*) |
Члены-функции
создаёт flat_multiset (публичный член-функция) |
|
уничтожает flat_multiset (публичный член-функция) |
|
| присваивает значения адаптеру контейнера (публичный член-функция) |
|
Итераторы |
|
| возвращает итератор к началу (публичный член-функция) |
|
| возвращает итератор к концу (публичный член-функция) |
|
| возвращает обратный итератор к началу (публичный член-функция) |
|
| возвращает обратный итератор к концу (публичный член-функция) |
|
Ёмкость |
|
| проверяет, пуст ли адаптер контейнера (публичный член-функция) |
|
| возвращает количество элементов (публичный член-функция) |
|
| возвращает максимальное возможное количество элементов (публичный член-функция) |
|
Модификаторы |
|
| создаёт элемент на месте (публичный член-функция) |
|
| создаёт элементы на месте с помощью подсказки (публичный член-функция) |
|
| вставляет элементы (публичный член-функция) |
|
| вставляет диапазон элементов (публичный член-функция) |
|
| извлекает базовый контейнер (публичный член-функция) |
|
| заменяет базовый контейнер (публичный член-функция) |
|
| удаляет элементы (публичный член-функция) |
|
| меняет местами содержимое (публичный член-функция) |
|
| очищает содержимое (публичный член-функция) |
|
Поиск |
|
| находит элемент с заданным ключом (публичный член-функция) |
|
| возвращает количество элементов, соответствующих заданному ключу (публичный член-функция) |
|
| проверяет, содержит ли контейнер элемент с заданным ключом (публичный член-функция) |
|
| возвращает итератор к первому элементу, не меньше заданного ключа (публичный член-функция) |
|
| возвращает итератор к первому элементу, больше заданного ключа (публичный член-функция) |
|
| возвращает диапазон элементов, соответствующих заданному ключу (публичный член-функция) |
|
Наблюдатели |
|
| возвращает функцию, сравнивающую ключи (публичный член-функция) |
|
возвращает функцию, сравнивающую ключи в объектах типа value_type (публичный член-функция) |
|
Нечленные функции
|
(C++23) | лексикографически сравнивает значения двух flat_multisets (шаблон функции) |
|
(C++23) | специализирует алгоритм std::swap (шаблон функции) |
|
(C++23) | удаляет все элементы, удовлетворяющие определенным критериям (шаблон функции) |
Вспомогательные классы
|
(C++23) | специализирует тип std::uses_allocator (специализация шаблона класса) |
Метки
|
(C++23) | метка, используемая для указания того, что элементы контейнера или диапазона отсортированы (уникальность не требуется) (метка) |
Руководства по выводу
Примечания
Типы членов iterator и const_iterator могут быть алиасами одного и того же типа. Это означает, что определение пары перегрузок функций с использованием двух типов в качестве типов параметров может нарушить правило одной дефиниции. Так как iterator преобразуется в const_iterator, одна функция с const_iterator в качестве типа параметра будет работать вместо этого.
| Макросы проверки функций | Значение | Std | Функция |
|---|---|---|---|
__cpp_lib_flat_set | 202207L | (C++23) |
std::flat_set и std::flat_multiset |
Пример
См. также
|
(C++23) | адаптирует контейнер для предоставления коллекции уникальных ключей, отсортированных по ключам (шаблон класса) |
| коллекция ключей, отсортированных по ключам (шаблон класса) |
|
|
(C++11) | коллекция ключей, хэшированных по ключам (шаблон класса) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/container/flat_multiset