Мультимножество в примере C ++ | Программа C ++ Multiset

Мультимножество в примере C ++ | Сегодняшняя тема — программа C ++ Multisets. Мультимножества — это контейнеры, очень похожие на наборы; Основное отличие мультимножеств состоит в том, что они могут содержать несколько элементов с одинаковыми значениями, в отличие от наборов. Контейнеры мультимножества хранят элемент в определенном определенном порядке. В мультимножествах мы можем стереть более 1 элемента, указав начальный итератор и конечный итератор.

Мультимножество в C ++

Мультимножество — это тип ассоциативных контейнеров похож на набор, за исключением того, что несколько элементов могут иметь одинаковые значения.

Multisets контейнеры медленнее, чем unordered_sets контейнеры, когда дело доходит до доступа к отдельным элементам по их ключу, но преимущество наборов состоит в том, что они позволяют выполнять прямую итерацию по подмножествам на основе их порядка элементов в контейнере.

Потребности в хранилище обрабатываются динамически, поскольку мультимножества поддерживают операции вставки и удаления.

В случае мультимножеств сортировка выполняется с помощью функции сравнения ключей compare. Такие операции, как поиск, вставка и удаление, имеют логарифмическую сложность.

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

Основным требованием мультимножеств является наличие контейнера, контейнера с осведомленным распределителем, ассоциативного контейнера и обратимого контейнера.

Основное применение мультимножеств — это двоичные деревья поиска.

Значение элементов в мультимножествах не может быть изменено после того, как они вставлены в контейнер, т. е. элементы всегда постоянный. Но операцию вставки и удаления можно выполнить.

Синтаксис мультимножества

 template  class alloc = allocator  >> class multiset; 

где X = multiset :: key_type/value type.

При использовании мультимножеств важно включать файл заголовка набора, который

#include , чтобы все функции мультимножества работали.

Свойства контейнера мультимножества

1 — Ассоциативный: Их ключевые ссылочные элементы присутствуют в ассоциативных контейнерах, а не по их абсолютному положению в контейнере.

2- Упорядочено: элементы в контейнере мультимножества все время следует приказу. Всем вставленным элементам присваивается положение в контейнере в соответствии с определенным порядком.

3- Несколько эквивалентных ключей: это свойство указывает, что несколько элементов присутствуют в мультимножества могут иметь одинаковые ключи.

4- Распределитель-осведомлен: Этот контейнер обычно использует объект распределителя для динамической обработки потребностей в хранилище.

Некоторые важные методы мультимножеств

begin ()

Он возвращает итератор к первому элементу, присутствующему в мультимножестве.

end ()

Возвращает итератор к теоретическому элементу, который следует за последним элементом в мультимножестве.

empty ()

Возвращает, является ли мультимножество пустым или нет.

max_size ()

Возвращает максимальное количество элементов, которое может содержать мультимножество.

Возвращает количество элементов в мультимножестве.

Программа мультимножества на C ++

Q1 — Напишите программу для вставки элемента в мультимножество.

 #  include  #include  с использованием пространства имен std; int main () {multiset > set_1;  set_1.insert (502);  set_1.insert (502);  set_1.insert (506);  set_1.insert (507);  set_1.insert (555);  multiset > :: iterator iterator_1;  cout  

Посмотреть результат.

Q2 - Напишите программу для вставки пяти элементов в набор, затем удаления двух элементов и затем печати набора.

 #include  #include  с использованием пространства имен std; int main () {multiset > set_1;  set_1.insert (502);  set_1.insert (502);  set_1.insert (506);  set_1.insert (507);  set_1.insert (555);  multiset > :: iterator iterator_1;  cout  

Посмотреть результат.

Во втором примере очень внимательно посмотрите на вывод, так как элементы до удаления также присутствуют во второй строке. (Вы можете пропустить это) после удаления остаются только три элемента, включая повторяющиеся элементы.

Дополнительные функции мультимножеств в C ++

  1. pair insert (const g): Добавляет новый элемент 'g' в мультимножество.
  2. Итератор insert (позиция итератора, const g): добавляет новый элемент 'g' в позицию, указанную итератором.
  3. erase (позиция итератора): Удаляет элемент в позиции, указанной итератором.
  4. erase (const g): удаляет значение 'g' из мультимножества.
  5. clear ( ): удаляет все элементы из мультимножества.
  6. key_comp ()/value_comp (): Возвращает объект, который определяет, как элементы в мультимножество упорядочено (по умолчанию '
  7. find (const g): Возвращает итератор к элементу 'g' в мультимножестве, если он найден, else возвращает итератор до конца.
  8. count (const g): возвращает количество совпадений с элементом 'g' в мультимножестве.
  9. lower_bound (const g) - возвращает итератор к первому элементу, который эквивалентен 'g' или определенно не будет идти перед элементом 'g' в мультимножестве.
  10. upper_bound (const g): возвращает итератор к первому элементу, который эквивалентен 'g' или определенно будет идти после элемента 'g' в мультимножестве.
  11. multiset :: swap (): Функция используется для обмена содержимым два мультимножества, но наборы должны быть одного типа, хотя размеры могут отличаться.
  12. multiset :: operator () : этот оператор используется для назначения нового содержимое в контейнер путем замены существующего содержимого.
  13. multiset :: emplace (): Функция используется для вставки нового элемента в контейнер мультимножества.
  14. multiset equal_range (): Возвращает итератор пар. Пара относится к диапазону, который включает все элементы в контейнере с ключом, эквивалентным k.
  15. multiset :: emplace_hint (): вставляет новый элемент в мультимножестве.
  16. multiset :: rbegin (): Возвращает обратный итератор, указывающий на последний элемент в контейнере мультимножества.
  17. multiset :: rend (): возвращает обратный итератор, указывающий на теоретический элемент прямо перед первым элементом в контейнере мультимножества.
  18. multiset :: cbegin (): возвращает постоянный итератор, указывающий на первый элемент в контейнере.
  19. multiset :: cend (): Возвращает постоянный итератор, указывающий на позицию за последним элементом в контейнере.
  20. multiset :: crbegin (): Возвращает постоянный обратный итератор, указывающий на последний элемент в контейнере.
  21. multiset :: crend ​​(): Возвращает постоянный обратный итератор, указывающий на позиция непосредственно перед первым элементом в контейнере.
  22. multiset :: get_allocator (): Возвращает копию объекта распределителя, связанного с мультимножеством.

Заключение

Мультимножества являются частью C ++ STL (стандартная библиотека шаблонов).

Мультимножества - это ассоциативные контейнеры, подобные Set, в которых хранятся отсортированные значения (само значение является ключом типа T), но в отличие от Set, в котором хранятся уникальные ключи, мультимножество может иметь повторяющиеся ключи .

По умолчанию для сравнения ключей используется оператор

Наконец, Multiset в C ++. Пример | Программа C ++ Multiset завершена.

Рекомендуемые сообщения

Программа очереди приоритетов C ++

Очереди в Пример C ++

Пример Deque в C ++

Учебное пособие по массиву C ++ с примером

Пример стека в C ++

Оцените статью
nanomode.ru
Добавить комментарий