-
Hajipur, Bihar, 844101
In C++, a Set is a part of the Standard Template Library (STL) that stores unique elements in a specific order. Sets automatically sort their elements and remove duplicates, making them ideal for tasks where uniqueness is important, such as maintaining a list of distinct values or removing duplicates from a dataset.
Sets use a balanced binary search tree (usually a Red-Black Tree) internally, which ensures that operations like insertion, deletion, and search all happen in logarithmic time complexity O(log n).
All elements in a set are unique; duplicates are automatically removed.
Elements are stored in sorted order by default.
Once an element is inserted, its value cannot be modified, though it can be removed and reinserted.
Sets provide efficient search, insertion, and deletion operations.
Sets are part of the <set> header file in C++ STL.
To use a set, include the header <set> and declare it using the following syntax:
#include <iostream>
#include <set>
using namespace std;
int main() {
set<int> numbers;
numbers.insert(10);
numbers.insert(20);
numbers.insert(10); // duplicate, ignored
for (int num : numbers) {
cout << num << " ";
}
return 0;
}
Output:
10 20
In this example, the duplicate value 10 is automatically ignored. The set keeps elements in ascending order.
C++ provides two main types of sets:
set – stores elements in ascending order by default.
multiset – allows duplicate elements and also keeps them sorted.
Example of a multiset:
#include <iostream>
#include <set>
using namespace std;
int main() {
multiset<int> nums = {10, 20, 10, 30};
for (int n : nums) {
cout << n << " ";
}
return 0;
}
Output:
10 10 20 30
Here are some commonly used functions in C++ sets:
| Function | Description |
|---|---|
insert(value) |
Adds an element to the set |
erase(value) |
Removes an element from the set |
find(value) |
Returns iterator to the value if found |
count(value) |
Returns 1 if element exists, otherwise 0 |
clear() |
Removes all elements from the set |
size() |
Returns the number of elements |
empty() |
Checks if the set is empty |
begin() / end() |
Returns iterator to start and end of the set |
#include <iostream>
#include <set>
using namespace std;
int main() {
set<int> nums = {5, 2, 8, 1};
cout << "Set elements: ";
for (int x : nums)
cout << x << " ";
nums.insert(3);
nums.erase(8);
cout << "\nAfter modifications: ";
for (int x : nums)
cout << x << " ";
return 0;
}
Output:
Set elements: 1 2 5 8
After modifications: 1 2 3 5
#include <iostream>
#include <set>
using namespace std;
int main() {
set<string> names = {"Anita", "Pooja", "Kavya"};
string searchName = "Pooja";
if (names.find(searchName) != names.end())
cout << searchName << " found in set.";
else
cout << searchName << " not found.";
return 0;
}
Output:
Pooja found in set.
count() in Set#include <iostream>
#include <set>
using namespace std;
int main() {
set<int> nums = {1, 2, 3, 4};
cout << "Is 3 present? " << nums.count(3) << endl;
cout << "Is 9 present? " << nums.count(9) << endl;
return 0;
}
Output:
Is 3 present? 1
Is 9 present? 0
You can iterate over a set using iterators as well:
for (set<int>::iterator it = nums.begin(); it != nums.end(); ++it) {
cout << *it << " ";
}
This method gives you more control if you want to erase elements during iteration or access them conditionally.
You can remove elements from a set in three ways:
By value – set.erase(value)
By position – set.erase(iterator)
By range – set.erase(start_iterator, end_iterator)
Example:
nums.erase(2); // Removes element 2
nums.erase(nums.begin()); // Removes first element
nums.erase(nums.begin(), nums.find(5)); // Removes range
#include <iostream>
#include <set>
using namespace std;
int main() {
set<string> fruits = {"Apple", "Banana", "Mango", "Apple"};
for (auto f : fruits)
cout << f << " ";
return 0;
}
Output:
Apple Banana Mango
C++ sets are an excellent choice for storing unique, sorted data efficiently. They automatically handle duplicate removal and keep elements organized in ascending order. Sets come with a variety of built-in operations like insertion, deletion, and searching, all performed in O(log n) time. When duplicates are allowed, you can use a multiset instead.
Sets are commonly used in real-world applications like filtering unique records, maintaining sorted datasets, and performing quick searches in large data collections.
Write a C++ program to create a set of integers and perform insert, erase, and display operations.
Create a program that takes a list of numbers from the user and removes duplicates using a set.
Write a C++ program to find whether a given element exists in a set using the find() function.
Build a program that counts how many unique characters are present in a string using a set.
Write a C++ program to merge two sets and display all unique elements in ascending order.
Create a program that finds the intersection of two sets.
Write a C++ program to store names in a set and display them in alphabetical order.
Build a program that removes all elements greater than a given number from a set.
Write a program to compare two sets and check whether they contain the same elements.
Create a C++ program to demonstrate the difference between a set and a multiset using integer values.