How to Filter Items of a Set based on a Condition in C++ - Step by Step Examples
How to Filter Items of a Set based on a Condition in C++ ?
Answer
To filter items of a set based on a condition in C++, you can use the std::copy_if algorithm with a lambda function as the filtering predicate to create a new set from the filtered items.
✐ Examples
1 Filtering Numbers Greater Than 5
In this example,
- We create a set named
numberSetusing thestd::unordered_setcontainer, which contains integer values1,5,10,15, and20. - We define a new set named
filteredSetof the same type and size asnumberSet. - We use the
std::copy_ifalgorithm with a lambda function as the filtering predicate to copy the numbers greater than 5 fromnumberSettofilteredSet. - Finally, we iterate through
filteredSetand print each filtered item to the console.
C++ Program
#include <iostream>
#include <unordered_set>
#include <algorithm>
int main() {
std::unordered_set<int> numberSet = {1, 5, 10, 15, 20};
std::unordered_set<int> filteredSet(numberSet.size());
std::copy_if(numberSet.begin(), numberSet.end(), filteredSet.begin(), [](int num) { return num > 5; });
for (int num : filteredSet) {
std::cout << num << std::endl;
}
return 0;
}Output
10 15 20
2 Filtering Strings Containing 'a'
In this example,
- We create a set named
stringSetusing thestd::unordered_setcontainer, which contains string values"apple","banana","cherry","date", and"grape". - We define a new set named
filteredStringSetof the same type and size asstringSet. - We use the
std::copy_ifalgorithm with a lambda function as the filtering predicate to copy the strings containing the letter 'a' fromstringSettofilteredStringSet. - Finally, we iterate through
filteredStringSetand print each filtered string to the console.
C++ Program
#include <iostream>
#include <unordered_set>
#include <algorithm>
#include <string>
int main() {
std::unordered_set<std::string> stringSet = {"apple", "banana", "cherry", "date", "grape"};
std::unordered_set<std::string> filteredStringSet(stringSet.size());
std::copy_if(stringSet.begin(), stringSet.end(), filteredStringSet.begin(), [](const std::string& str) { return str.find('a') != std::string::npos; });
for (const std::string& str : filteredStringSet) {
std::cout << str << std::endl;
}
return 0;
}Output
apple banana grape
Summary
In this tutorial, we learned How to Filter Items of a Set based on a Condition in C++ language with well detailed examples.
More C++ Sets Tutorials
- How to create an Empty Set in C++ ?
- How to Initialize a Set in C++ ?
- How to Get Length of a Set in C++ ?
- How to create a Set of size N in C++ ?
- How to create a Set of Numbers from 1 to N in C++ ?
- How to create a Set of integers in C++ ?
- How to create a Set of Strings in C++ ?
- How to Access Items in a Set in C++ ?
- How to get a Random Item in a Set in C++ ?
- How to Iterate Over a Set in C++ ?
- How to check if a Set is Empty in C++ ?
- How to check if a Set is Not Empty in C++ ?
- How to get Subset from a Set in C++ ?
- How to check if a Specific Item is present in the Set in C++ ?
- How to check if a Set contains all the items of Another Set in C++ ?
- How to Sort Items of a Set in C++ ?
- How to Copy a Set in C++ ?
- How to add an Item to a Set in C++ ?
- How to find Union of Two Sets in C++ ?
- How to find Intersection of Two Sets in C++ ?
- How to check if Two Sets are Equal in C++ ?
- How to Convert a Set of Integers to a Set of Strings in C++ ?
- How to Convert a Set of Strings to a Set of Integers in C++ ?
- How to Convert a Set of Floats to a Set of Strings in C++ ?
- How to Filter Items of a Set based on a Condition in C++ ?
- How to Remove Specific Item from a Set in C++ ?
- How to Remove Items from Set based on a Condition in C++ ?
- How to create a Set of Sets in C++ ?