(C++17) | ||||
Sequence | ||||
(C++11) | ||||
(C++26) | ||||
(C++26) | ||||
(C++11) | ||||
Associative | ||||
Unordered associative | ||||
(C++11) | ||||
(C++11) | ||||
(C++11) | ||||
(C++11) | ||||
Adaptors | ||||
(C++23) | ||||
(C++23) | ||||
(C++23) | ||||
(C++23) | ||||
Views | ||||
(C++20) | ||||
(C++23) | ||||
Tables | ||||
Iterator invalidation | ||||
Member function table | ||||
Non-member function table |
Member functions | |||||||||||||||||||||||||||
Non-member functions | |||||||||||||||||||||||||||
| |||||||||||||||||||||||||||
Deduction guides(C++17) |
Defined in header <set> | ||
template<class Key,class Compare,class Alloc, class Pred> | (since C++20) (constexpr since C++26) | |
Erases all elements that satisfy the predicatepred fromc.
Equivalent to
auto old_size= c.size();for(auto first= c.begin(), last= c.end(); first!= last;){if(pred(*first)) first= c.erase(first);else++first;}return old_size- c.size();
Contents |
c | - | container from which to erase |
pred | - | predicate that returnstrue if the element should be erased |
The number of erased elements.
Linear.
#include <iostream>#include <set> void println(auto rem,constauto& container){std::cout<< rem<<'{';for(char sep[]{0,' ',0};constauto& item: container)std::cout<< sep<< item,*sep=',';std::cout<<"}\n";} int main(){std::multiset data{3,3,4,5,5,6,6,7,2,1,0}; println("Original:\n", data); auto divisible_by_3=[](constauto& x){return(x%3)==0;}; constauto count=std::erase_if(data, divisible_by_3); println("Erase all items divisible by 3:\n", data);std::cout<< count<<" items erased.\n";}
Output:
Original:{0, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7}Erase all items divisible by 3:{1, 2, 4, 5, 5, 7}5 items erased.
removes elements satisfying specific criteria (function template)[edit] | |
(C++20)(C++20) | removes elements satisfying specific criteria (algorithm function object)[edit] |