How to Filter Items of a Set based on a Condition in C++


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,

  1. We create a set named numberSet using the std::unordered_set container, which contains integer values 1, 5, 10, 15, and 20.
  2. We define a new set named filteredSet of the same type and size as numberSet.
  3. We use the std::copy_if algorithm with a lambda function as the filtering predicate to copy the numbers greater than 5 from numberSet to filteredSet.
  4. 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,

  1. We create a set named stringSet using the std::unordered_set container, which contains string values "apple", "banana", "cherry", "date", and "grape".
  2. We define a new set named filteredStringSet of the same type and size as stringSet.
  3. We use the std::copy_if algorithm with a lambda function as the filtering predicate to copy the strings containing the letter 'a' from stringSet to filteredStringSet.
  4. 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

  1. How to create an Empty Set in C++ ?
  2. How to Initialize a Set in C++ ?
  3. How to Get Length of a Set in C++ ?
  4. How to create a Set of size N in C++ ?
  5. How to create a Set of Numbers from 1 to N in C++ ?
  6. How to create a Set of integers in C++ ?
  7. How to create a Set of Strings in C++ ?
  8. How to Access Items in a Set in C++ ?
  9. How to get a Random Item in a Set in C++ ?
  10. How to Iterate Over a Set in C++ ?
  11. How to check if a Set is Empty in C++ ?
  12. How to check if a Set is Not Empty in C++ ?
  13. How to get Subset from a Set in C++ ?
  14. How to check if a Specific Item is present in the Set in C++ ?
  15. How to check if a Set contains all the items of Another Set in C++ ?
  16. How to Sort Items of a Set in C++ ?
  17. How to Copy a Set in C++ ?
  18. How to add an Item to a Set in C++ ?
  19. How to find Union of Two Sets in C++ ?
  20. How to find Intersection of Two Sets in C++ ?
  21. How to check if Two Sets are Equal in C++ ?
  22. How to Convert a Set of Integers to a Set of Strings in C++ ?
  23. How to Convert a Set of Strings to a Set of Integers in C++ ?
  24. How to Convert a Set of Floats to a Set of Strings in C++ ?
  25. How to Filter Items of a Set based on a Condition in C++ ?
  26. How to Remove Specific Item from a Set in C++ ?
  27. How to Remove Items from Set based on a Condition in C++ ?
  28. How to create a Set of Sets in C++ ?