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
numberSet
using thestd::unordered_set
container, which contains integer values1
,5
,10
,15
, and20
. - We define a new set named
filteredSet
of the same type and size asnumberSet
. - We use the
std::copy_if
algorithm with a lambda function as the filtering predicate to copy the numbers greater than 5 fromnumberSet
tofilteredSet
. - Finally, we iterate through
filteredSet
and 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
stringSet
using thestd::unordered_set
container, which contains string values"apple"
,"banana"
,"cherry"
,"date"
, and"grape"
. - We define a new set named
filteredStringSet
of the same type and size asstringSet
. - We use the
std::copy_if
algorithm with a lambda function as the filtering predicate to copy the strings containing the letter 'a' fromstringSet
tofilteredStringSet
. - Finally, we iterate through
filteredStringSet
and 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++ ?