Использование set (множества)

Set – это множество, которое содержит несколько отсортированных элементов. При добавлении нового элемента в множество он сразу становится на свое место так, чтобы не нарушать порядка сортировки. Множества содержат только уникальные элементы, а мультимножества могут содержать дубликаты. Операции поиска, удаления и вставки имеют логарифмическую сложность.
 
Для использования множеств необходимо подключить библиотеку “set”:
 
#include <set>

Объявление множества:

set<int> mySet; // Объявление пустого множества.

multiset<int> mySet; // Объявление пустого мультимножества.


Функции:
 
empty - Проверяет отсутствие элементов в контейнере
 
size - Возвращает количество элементов в контейнере
 
clear - Очищает контейнер
 
insert - Вставляет элементы
 
erase - Удаляет элементы
 
count - Возвращает количество элементов, соответствующих определенному ключу
 
find - Находит элемент с конкретным ключом
 
lower_bound - Возвращает итератор на первый элемент не менее, чем заданное значение
 
upper_bound - Возвращает итератор на первый элемент больше, чем определенное значение
 
Пример использования множества и мультимножества:

 

#include <iostream>

#include <set>

using namespace std;

int main()

{

set<int> mySet1; // объявили пустое множество

multiset<int> mySet2; // объявили пустое мультимножество

// добавляем элементы в множество

mySet1.insert(1);

mySet1.insert(2);

mySet1.insert(3);

mySet1.insert(1);

// добавляем элементы в мультимножество

mySet2.insert(1);

mySet2.insert(2);

mySet2.insert(3);

mySet2.insert(1);

set<int>::iterator it; //создание итератора

for(it = mySet1.begin(); it != mySet1.end(); it++) { // Вывод всех элементов

cout << (*it) <<  ; // множества

}

cout << endl;

for(it = mySet2.begin(); it != mySet2.end(); it++) { // Вывод всех элементов

cout << (*it) <<  ; // мультимножества

}

return 0;

}

пример компратора для создания упорядоченного множества по убыванию:

struct cmp {
    bool operator() ( int a,  int b) const{
	 return a > b;
    }
};


и его использование при создании set:

 set<int,cmp> s;