Разница между set, multiset, unordered_set, unordered_multiset в С++

Опубликовано: 15 Сентября, 2022

В стандартной библиотеке шаблонов C++ для хранения элементов используются set, multiset, unordered_set, unordered_multiset. Хотя они похожи, но отличаются друг от друга некоторыми функциями. Различия обсуждаются ниже:

1. Набор : это ассоциативные контейнеры, в которых хранятся уникальные элементы в определенном порядке. Ниже приведены свойства наборов:

  • Сохраняет значения в отсортированном порядке.
  • Сохраняет только уникальные значения.
  • Элементы можно только вставлять или удалять, но нельзя изменять.
  • Мы можем стереть более 1 элемента, задав начальную и конечную позицию итератора.
  • Обход с помощью итераторов.
  • Наборы реализованы как двоичное дерево поиска.

Синтаксис:

set<datatype> setname;

В следующем примере демонстрируется применение set.

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

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

Примечание. Все остальные свойства аналогичны набору.

Синтаксис:

multiset<datatype> multisetName;

В следующем примере демонстрируется применение Multiset.

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

  • Элементы могут храниться в любом порядке. (без сортировки)
  • Сохраняет только уникальные значения.
  • Хеш-таблица используется для хранения элементов.
  • Мы можем стереть только тот элемент, для которого задана позиция итератора.

Примечание. Все остальные свойства аналогичны набору.

Синтаксис:

unordered_set<datatype> setname;

В следующем примере демонстрируется применение неупорядоченного множества.

4. Unordered_multiset : это ассоциативный контейнер, содержащий набор неуникальных элементов в несортированном порядке. Ниже приведены свойства Unordered_multiset:

  • Элементы могут храниться в любом порядке.
  • Повторяющиеся элементы могут быть сохранены.
  • Хеш-таблица используется для хранения элементов.
  • Мы можем стереть только тот элемент, для которого задана позиция итератора.

Примечание. Все остальные свойства аналогичны набору.

Синтаксис:

unordered_multiset<datatype> multisetName;

В следующем примере демонстрируется применение неупорядоченного мультимножества.

Разница между set, multiset, unordered_set, unordered_multiset:

  • Проще говоря, набор — это контейнер, в котором хранятся отсортированные и уникальные элементы. Добавление unordered означает, что элементы не отсортированы .
  • Добавление мультимножества означает, что разрешено хранение повторяющихся элементов .

Эта статья предоставлена SHAURYA UPPAL . Если вам нравится GeeksforGeeks и вы хотите внести свой вклад, вы также можете написать статью с помощью write.geeksforgeeks.org или отправить ее по адресу review-team@geeksforgeeks.org. Посмотрите, как ваша статья появится на главной странице GeeksforGeeks, и помогите другим гикам. Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсуждаемой выше.