-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathSTL_Associative_container_set_1.cpp
116 lines (92 loc) · 4.13 KB
/
STL_Associative_container_set_1.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
/*
In a set, the value of an element also identifies it (the value is itself the key, of type T), and each value must be unique. 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.
Internally, the elements in a set are always sorted following a specific strict weak ordering criterion indicated by its internal comparison object (of type Compare).
set containers are generally slower than unordered_set containers to access individual elements by their key, but they allow the direct iteration on subsets based on their order.
Sets are typically implemented as binary search trees.
Member functions:
(constructor) Construct set (public member function)
(destructor) Set destructor (public member function)
operator= Copy container content (public member function)
Iterators:
begin Return iterator to beginning (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)
Allocator:
get_allocator Get allocator (public member function)
*/
// CPP program to demonstrate various functions of Set in C++ STL
#include <iostream>
#include <iterator>
#include <set>
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) : " << num << "elements 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) : "<< *s1.lower_bound(40) << endl;
cout << "s1.upper_bound(40) : "<< *s1.upper_bound(40) << endl;
// lower bound and upper bound for set s2
cout << "s2.lower_bound(40) : "<< *s2.lower_bound(40) << endl;
cout << "s2.upper_bound(40) : "<< *s2.upper_bound(40) << endl;
return 0;
}