SlideShare a Scribd company logo
1 of 6
Контейнеры set, multiset в
C++
Что такое set и multiset
set — это контейнер, который автоматически сортирует добавляемые элементы в порядке
возрастания. Но при добавлении одинаковых значений, set будет хранить только один его
экземпляр. По другому его еще называют множеством.
multiset — это контейнер, который также будет содержать элементы в отсортированном
порядке при добавлении, но он хранит повторяющееся элементы, по сравнению с множеством
set. Часто его называют мультимножество.
Как создать set и multiset
Для использование, с самого начала нужно подключить единственную библиотеку — <set>
#include <set>
Далее используем данную конструкцию:
set < [тип] > <имя>;
multiset < [тип] > <имя>
[тип] — это тип данных для нашего контейнера.
[имя]— название нашего контейнера.
Чтобы добавить новый элемент нужно использовать функцию insert():
st.insert(<значение>);
Обратная сортировка
Возможно понадобиться изменить сторону сортировки в обратную (по-убыванию) для
этого можно сделать с помощью greater, вот так:
set < [тип], greater [тип] > [имя];
set <long long, greater <long long> > st; // пример
В каждом из пунктов [тип] должен быть одинаковый.
Также можно добавлять значения при инициализации контейнеров:
set <int> st{1,2,3,4,5};
Удаление значений
erase
С помощь нее вы сможете:
Удалить какой-то конкретный элемент — <имя>.erase([итератор]).
Удалить все элементы с данным значением — <название>.erase([ключ]). Это отличная функция для мультимножества. А для set мы как раз удалим
конкретный элемент, это удобнее чем:
Найти итератор на определенное значение через функции find или lower_bound
А потом его удалить
Либо удалить определенный диапазон значений.
<имя>.erase([начала], [конец]);
[начала] — с какого элемента будет происходить удаление (включительно).
[конец] — до какого элемента будет продолжаться (не включительно).
Пример:
C++
mst.erase(3); // удалим все элементы со значением 3
Плюсы и минусы использования set и
multiset
Плюсы:
Быстрая сортировка элементов.
Минусы:
Нельзя обратится к конкретной ячейке по индексу [].
Если у вас мало обращений к определенным ячейкам, то использовать однозначно нужно.
Если же вам придется очень часто обращаться к произвольным ячейкам — то использовать лучше
vector или массив, если это возможно.

More Related Content

Similar to set multiset.pptx

C++ STL & Qt. Занятие 01.
C++ STL & Qt. Занятие 01.C++ STL & Qt. Занятие 01.
C++ STL & Qt. Занятие 01.Igor Shkulipa
 
Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...
Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...
Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...CocoaHeads
 
Алгоритмы и структуры данных весна 2014 лекция 2
Алгоритмы и структуры данных весна 2014 лекция 2Алгоритмы и структуры данных весна 2014 лекция 2
Алгоритмы и структуры данных весна 2014 лекция 2Technopark
 
Presentation pseudo element
Presentation pseudo elementPresentation pseudo element
Presentation pseudo elementTania Korab
 
Sergii Tsypanov "Performance 1001 Tips"
Sergii Tsypanov "Performance 1001 Tips"Sergii Tsypanov "Performance 1001 Tips"
Sergii Tsypanov "Performance 1001 Tips"LogeekNightUkraine
 
Java. Интерфейс Set - наборы (множества) и его реализации.
Java. Интерфейс Set - наборы (множества) и его реализации.Java. Интерфейс Set - наборы (множества) и его реализации.
Java. Интерфейс Set - наборы (множества) и его реализации.Unguryan Vitaliy
 
Лекция 3 Элементарные структуры данных Часть 1
Лекция 3 Элементарные структуры данных Часть 1Лекция 3 Элементарные структуры данных Часть 1
Лекция 3 Элементарные структуры данных Часть 1simple_people
 
C#. От основ к эффективному коду
C#. От основ к эффективному кодуC#. От основ к эффективному коду
C#. От основ к эффективному кодуVasiliy Deynega
 
Java. Массивы. Многомерные массивы.
Java. Массивы. Многомерные массивы.Java. Массивы. Многомерные массивы.
Java. Массивы. Многомерные массивы.Unguryan Vitaliy
 
Быть в 10 раз эффективнее благодаря Groovy
Быть в 10 раз эффективнее благодаря GroovyБыть в 10 раз эффективнее благодаря Groovy
Быть в 10 раз эффективнее благодаря GroovyEvgeny Kompaniyets
 
Python dict: прошлое, настоящее, будущее
Python dict: прошлое, настоящее, будущееPython dict: прошлое, настоящее, будущее
Python dict: прошлое, настоящее, будущееdelimitry
 
лабораторная работа №4
лабораторная работа №4лабораторная работа №4
лабораторная работа №4Gulnaz Shakirova
 

Similar to set multiset.pptx (20)

C++ STL & Qt. Занятие 01.
C++ STL & Qt. Занятие 01.C++ STL & Qt. Занятие 01.
C++ STL & Qt. Занятие 01.
 
Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...
Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...
Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...
 
Алгоритмы и структуры данных весна 2014 лекция 2
Алгоритмы и структуры данных весна 2014 лекция 2Алгоритмы и структуры данных весна 2014 лекция 2
Алгоритмы и структуры данных весна 2014 лекция 2
 
Presentation pseudo element
Presentation pseudo elementPresentation pseudo element
Presentation pseudo element
 
Sergii Tsypanov "Performance 1001 Tips"
Sergii Tsypanov "Performance 1001 Tips"Sergii Tsypanov "Performance 1001 Tips"
Sergii Tsypanov "Performance 1001 Tips"
 
Java. Интерфейс Set - наборы (множества) и его реализации.
Java. Интерфейс Set - наборы (множества) и его реализации.Java. Интерфейс Set - наборы (множества) и его реализации.
Java. Интерфейс Set - наборы (множества) и его реализации.
 
Лекция 3 Элементарные структуры данных Часть 1
Лекция 3 Элементарные структуры данных Часть 1Лекция 3 Элементарные структуры данных Часть 1
Лекция 3 Элементарные структуры данных Часть 1
 
C#. От основ к эффективному коду
C#. От основ к эффективному кодуC#. От основ к эффективному коду
C#. От основ к эффективному коду
 
Java. Массивы. Многомерные массивы.
Java. Массивы. Многомерные массивы.Java. Массивы. Многомерные массивы.
Java. Массивы. Многомерные массивы.
 
List - списки
List - списки List - списки
List - списки
 
Collections
CollectionsCollections
Collections
 
Быть в 10 раз эффективнее благодаря Groovy
Быть в 10 раз эффективнее благодаря GroovyБыть в 10 раз эффективнее благодаря Groovy
Быть в 10 раз эффективнее благодаря Groovy
 
Python dict: прошлое, настоящее, будущее
Python dict: прошлое, настоящее, будущееPython dict: прошлое, настоящее, будущее
Python dict: прошлое, настоящее, будущее
 
лабраб 7
лабраб 7лабраб 7
лабраб 7
 
лабораторная работа №4
лабораторная работа №4лабораторная работа №4
лабораторная работа №4
 
лабораторная работа №4
лабораторная работа №4лабораторная работа №4
лабораторная работа №4
 
лабораторная работа №4
лабораторная работа №4лабораторная работа №4
лабораторная работа №4
 
Основы языка R
Основы языка RОсновы языка R
Основы языка R
 
лек13 5
лек13 5лек13 5
лек13 5
 
Step 3.2
Step 3.2Step 3.2
Step 3.2
 

set multiset.pptx

  • 2. Что такое set и multiset set — это контейнер, который автоматически сортирует добавляемые элементы в порядке возрастания. Но при добавлении одинаковых значений, set будет хранить только один его экземпляр. По другому его еще называют множеством. multiset — это контейнер, который также будет содержать элементы в отсортированном порядке при добавлении, но он хранит повторяющееся элементы, по сравнению с множеством set. Часто его называют мультимножество.
  • 3. Как создать set и multiset Для использование, с самого начала нужно подключить единственную библиотеку — <set> #include <set> Далее используем данную конструкцию: set < [тип] > <имя>; multiset < [тип] > <имя> [тип] — это тип данных для нашего контейнера. [имя]— название нашего контейнера. Чтобы добавить новый элемент нужно использовать функцию insert(): st.insert(<значение>);
  • 4. Обратная сортировка Возможно понадобиться изменить сторону сортировки в обратную (по-убыванию) для этого можно сделать с помощью greater, вот так: set < [тип], greater [тип] > [имя]; set <long long, greater <long long> > st; // пример В каждом из пунктов [тип] должен быть одинаковый. Также можно добавлять значения при инициализации контейнеров: set <int> st{1,2,3,4,5};
  • 5. Удаление значений erase С помощь нее вы сможете: Удалить какой-то конкретный элемент — <имя>.erase([итератор]). Удалить все элементы с данным значением — <название>.erase([ключ]). Это отличная функция для мультимножества. А для set мы как раз удалим конкретный элемент, это удобнее чем: Найти итератор на определенное значение через функции find или lower_bound А потом его удалить Либо удалить определенный диапазон значений. <имя>.erase([начала], [конец]); [начала] — с какого элемента будет происходить удаление (включительно). [конец] — до какого элемента будет продолжаться (не включительно). Пример: C++ mst.erase(3); // удалим все элементы со значением 3
  • 6. Плюсы и минусы использования set и multiset Плюсы: Быстрая сортировка элементов. Минусы: Нельзя обратится к конкретной ячейке по индексу []. Если у вас мало обращений к определенным ячейкам, то использовать однозначно нужно. Если же вам придется очень часто обращаться к произвольным ячейкам — то использовать лучше vector или массив, если это возможно.