std::experimental::erase_if (std::basic_string)
От ru.cppreference.net
< cpp | experimental
| Определён в заголовочном файле <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) | |
Удаляет все элементы, удовлетворяющие предикату pred из контейнера. Эквивалентно c.erase(std::remove_if(c.begin(), c.end(), pred), c.end());.
Параметры
| c | - | контейнер, из которого производится удаление |
| pred | - | предикат, определяющий, какие элементы должны быть удалены |
Сложность
Линейный.
Пример
Запустить этот код
#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'; }
Вывод:
Original string: "1337!p_C00L_<a-_HACKER_!@s_{!s#@_w^o%r*d#42"
After erase_if: "password"
См. также
| удаляет элементы, удовлетворяющие определённым критериям (шаблон функции & объект функции алгоритма) | |
(C++20)(C++20) |
|
(библиотечных основ 2 TS) |
удаляет все элементы, равные определённому значению, из std::basic_string (шаблон функции) |