Конструкторы и деструктор

Операция Назначение
set s Создает пустое множество или мультимножество, не содержащее ни одного элемента
set s(op) Создает пустое множество или мультимножество, ис-пользующее критерий сор-тировки ор
set s=s1, set s(s1) Копирующий конструктор; создает копию другого множества/мультимножества того же типа (все элементы копируются)
set s(beg,end) Создаёт множество s из элементов интервала [begin,end)любого контейнера, в том числе из эл-тов простого массива
set s(beg,end,op) Создает множество или мультимножество с критерием сортировки ор, инициализированное элементами интервала [beg,end) любого контейнера
set s(initlist), set s=initlist Создает множество/мульти-множество, инициализиро-ванное элементами списка инициализации initlist (стандарт С++ 11)
s.~set() Уничтожает все элементы и освобождает память

 

В таблице символами «set» обозначена одна из следующих конструкций:

- set<Elem> — множество с сортировкой по критерию less<> (оператор <);

- set<Elem,op> — множество с сортировкой по критерию ор;

- multiset<Elem> — мультимножество с сортировкой по критерию less<> (оператор <);

- multiset<Elem,op> — мультимножество с сортировкой по критерию ор.

 

Таблица 27.2

Немодифицирующие операции

Операция Назначение
s.size() Возвращает количество элементов в множестве s
s.empty() Возвращает true, если множество s пустое (эквивалент size()==0, но иногда выполняется быстрее)
s.max_size() Возвращает максимально возможный размер множества s
s1 == s2 Проверяет равенство двух множеств
sl! = s2 Проверяет неравенство двух множеств
sl < s2 Проверяет, что s1 < s2 (поэлементно)
sl > s2 Проверяет, что s1 > s2
sl <= s2 Проверяет, что s1 <= s2
sl >= s2 Проверяет, что s1 >= s2

Таблица 27.3

Специальные операции поиска

Операция Назначение
s.count(elem) Возвращает количество элементов со значением elem
s.find(elem) Возвращает позицию первого элемента со значением elem (или end())
s.lower_bound(elem) Возвращает первую позицию, в которую может быть вставлен элемент elem(первый элемент >= elem) или end(), если такого элемента нет
s.upper_bound(elem) Возвращает последнюю пози-цию, в которой может быть вставлен элемент elem (первый элемент > elem) или end(), если такого элемента нет
s. equal_range(elem) Возвращает первую и пос-леднюю позиции, в которых может быть вставлен элемент elem (интервал, в котором элементы == elem) если элемента в множестве нет, обе позиции будут равны

 

Следующий пример демонстрирует применение функций lower_bound(), upper_ bound() и equal_range().

//Листинг 27.1

#include<iostream>

#include <set>

using namespace std;

int main () {

set<int> c;

c.insert(1);

c.insert(2);

c.insert(4);

c.insert(5);

c.insert(6);

cout<<"lower_bound(3): "

<< *c.lower_bound(3) << endl;

cout << "upper_bound(3): "

<< *c.upper_bound(3) << endl;

cout << "equal_range(3): "

<< *c.equal_range(3).first<< " "

<< *c.equal_range(3).second << endl;

cout << endl;

 

cout <<"lower_bound(5): "

<<*c.lower_bound(5)<<endl;

cout<< "upper_bound(5): "

<< *c.upper_bound(5)<< endl;

cout<<"equal_range(5): "

<<*c.equal_range(5).first << " "

<<*c.equal_range(5).second << endl;

return 0;

}

 

Результат выполнения программы:

lower_bound(3): 4

upper_bound(3): 4

equal_range(3): 4 4

lower_bound(5): 5

upper_bound(5): 6

equal_range(5): 5 6

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

 

Таблица 27.4


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: