std::erase, std::erase_if(std::basic_string) - cppreference.com (original) (raw)
| Defined in header | ||
|---|---|---|
| (1) | ||
| template< class CharT, class Traits, class Alloc, class U > constexpr typename std::basic_string<CharT, Traits, Alloc>::size_type erase( std::basic_string<CharT, Traits, Alloc>& c, const U& value ); | (since C++20) (until C++26) | |
| template< class CharT, class Traits, class Alloc, class U = CharT > constexpr typename std::basic_string<CharT, Traits, Alloc>::size_type erase( std::basic_string<CharT, Traits, Alloc>& c, const U& value ); | (since C++26) | |
| template< class CharT, class Traits, class Alloc, class Pred > constexpr typename std::basic_string<CharT, Traits, Alloc>::size_type erase_if( std::basic_string<CharT, Traits, Alloc>& c, Pred pred ); | (2) | (since C++20) |
Erases all elements that compare equal to value from the container c. Equivalent toauto it = std::remove(c.begin(), c.end(), value);
auto r = c.end() - it;
c.erase(it, c.end());
return r;.Erases all elements that satisfy the predicate pred from the container c. Equivalent toauto it = std::remove_if(c.begin(), c.end(), pred);
auto r = c.end() - it;
c.erase(it, c.end());
return r;.
[edit] Parameters
| c | - | container from which to erase |
|---|---|---|
| value | - | value to be removed |
| pred | - | unary predicate which returns true if the element should be erased. The expression pred(v) must be convertible to bool for every argument v of type (possibly const) CharT, regardless of value category, and must not modify v. Thus, a parameter type of CharT&is not allowed, nor is CharT unless for CharT a move is equivalent to a copy(since C++11). |
[edit] Return value
The number of erased elements.
[edit] Complexity
Linear.
Notes
| Feature-test macro | Value | Std | Feature |
|---|---|---|---|
| __cpp_lib_algorithm_default_value_type | 202403 | (C++26) | List-initialization for std::erase |
[edit] Example
Possible output:
Initially, word = "startling" After erase 'l', word = "starting" After erase all 'a', 'r', and 't': "sing" Erased symbols count: 4 After erase {'g'}: "sin"