Sets are a type of associative containers in which each element has to be unique because the value of the element identifies it. The values are stored in a specific order. The value of the elements in a set cannot be modified once in the container (the elements are always const), but they can be inserted or removed from the container.
Syntax :
set<datatype> setname;
Member functions :
- Iterators:
begin : Returns an iterator to the first element in the set (public member function )
end : Return iterator to end (public member function )
rbegin : Return reverse iterator to reverse beginning (public member function )
rend : Return reverse iterator to reverse end (public member function )
cbegin : Return const_iterator to beginning (public member function )
cend : Return const_iterator to end (public member function )
crbegin : Return const_reverse_iterator to reverse beginning (public member function )
crend : Return const_reverse_iterator to reverse end (public member function ) - Capacity:
empty : Test whether container is empty (public member function )
size : Return container size (public member function )
max_size : Return maximum size (public member function ) - Modifiers:
insert : Insert element (public member function )
erase : Erase elements (public member function )
swap : Swap content (public member function )
clear : Clear content (public member function )
emplace : Construct and insert element (public member function )
emplace_hint : Construct and insert element with hint (public member function ) - Observers:
key_comp : Return comparison object (public member function )
value_comp : Return comparison object (public member function ) - Operations:
find : Get iterator to element (public member function )
count : Count elements with a specific value (public member function )
lower_bound : Return iterator to lower bound (public member function )
upper_bound : Return iterator to upper bound (public member function )
equal_range : Get range of equal elements (public member function )
// CPP program to demonstrate various functions of Set in C++ STL
#include <iostream>
#include <iterator>
#include <set>
//#include <bits/stdc++.h>
using namespace std;
int main()
{
// empty set container
set<int, greater<int> > s1;
// insert elements in random order
s1.insert(40);
s1.insert(30);
s1.insert(60);
s1.insert(20);
s1.insert(50);
// only one 50 will be added to the set
s1.insert(50);
s1.insert(10);
// printing set s1
set<int, greater<int> >::iterator itr;
cout << "\nThe set s1 is : \n";
for (itr = s1.begin(); itr != s1.end(); itr++) {
cout << *itr << " ";
}
cout << endl;
// assigning the elements from s1 to s2
set<int> s2(s1.begin(), s1.end());
// print all elements of the set s2
cout << "\nThe set s2 after assign from s1 is : \n";
for (itr = s2.begin(); itr != s2.end(); itr++) {
cout << *itr << " ";
}
cout << endl;
// remove all elements up to 30 in s2
cout << "\ns2 after removal of elements less than 30 "
":\n";
s2.erase(s2.begin(), s2.find(30));
for (itr = s2.begin(); itr != s2.end(); itr++) {
cout << *itr << " ";
}
// remove element with value 50 in s2
int num;
num = s2.erase(50);
cout << "\ns2.erase(50) : ";
cout << num << " removed\n";
for (itr = s2.begin(); itr != s2.end(); itr++) {
cout << *itr << " ";
}
cout << endl;
// lower bound and upper bound for set s1
cout << "s1.lower_bound(40) : \n"
<< *s1.lower_bound(40) << endl;
cout << "s1.upper_bound(40) : \n"
<< *s1.upper_bound(40) << endl;
// lower bound and upper bound for set s2
cout << "s2.lower_bound(40) :\n"
<< *s2.lower_bound(40) << endl;
cout << "s2.upper_bound(40) : \n"
<< *s2.upper_bound(40) << endl;
return 0;
}
/*
Output :
The set s1 is :
60 50 40 30 20 10
The set s2 after assign from s1 is :
10 20 30 40 50 60
s2 after removal of elements less than 30 :
30 40 50 60
s2.erase(50) : 1 removed
30 40 60
s1.lower_bound(40) :
40
s1.upper_bound(40) :
30
s2.lower_bound(40) :
40
s2.upper_bound(40) :
60
*/