Technical Specification | ||||
Filesystem library(filesystem TS) | ||||
Library fundamentals(library fundamentals TS) | ||||
Library fundamentals 2(library fundamentals TS v2) | ||||
Library fundamentals 3(library fundamentals TS v3) | ||||
Extensions for parallelism(parallelism TS) | ||||
Extensions for parallelism 2(parallelism TS v2) | ||||
Extensions for concurrency(concurrency TS) | ||||
Extensions for concurrency 2(concurrency TS v2) | ||||
Concepts(concepts TS) | ||||
Ranges(ranges TS) | ||||
Reflection(reflection TS) | ||||
Mathematical special functions(special functions TR) | ||||
Experimental Non-TS | ||||
Pattern Matching | ||||
Linear Algebra | ||||
std::execution | ||||
Contracts | ||||
2D Graphics |
![]() | Merged into ISO C++ The functionality described on this page was merged into the mainline ISO C++ standardas of 11/2018, seestd::erase_if(since C++20) |
Defined in header <experimental/string> | ||
template<class CharT,class Traits,class Alloc,class Pred> void erase_if(std::basic_string<CharT, Traits, Alloc>& c, Pred pred); | (library fundamentals TS v2) | |
Erases all elements that satisfy the predicatepred from the container. Equivalent toc.erase(std::remove_if(c.begin(), c.end(), pred), c.end());.
Contents |
c | - | container from which to erase |
pred | - | predicate that determines which elements should be erased |
Linear.
#include <experimental/string>#include <iomanip>#include <iostream> int main(){std::string data{"1337!p_C00L_<a-_HACKER_!@s_(!s#@_w^o%r*d#42"};std::cout<<"Original string: "<<std::quoted(data)<<'\n';auto crack=[](auto O){return'`'^('`'& O);}; std::experimental::erase_if(data, crack);std::cout<<"After erase_if: "<<std::quoted(data)<<'\n';}
Output:
Original string: "1337!p_C00L_<a-_HACKER_!@s_{!s#@_w^o%r*d#42"After erase_if: "password"
removes elements satisfying specific criteria (function template)[edit] | |
(library fundamentals 2 TS) | erases all elements equal to a specific value from astd::basic_string (function template)[edit] |