Namespaces
Variants

std::experimental::erase_if (std::basic_string)

ja.cppreference.net より

 
 
実験的
技術仕様書
ファイルシステムライブラリ (filesystem TS)
ライブラリ基礎 (library fundamentals TS)
ライブラリ基礎2 (library fundamentals TS v2)
ライブラリ基礎3 (library fundamentals TS v3)
並列処理の拡張 (parallelism TS)
並列処理の拡張2 (parallelism TS v2)
並行処理の拡張 (concurrency TS)
並行処理の拡張2 (concurrency TS v2)
コンセプト (concepts TS)
範囲 (ranges TS)
リフレクション (reflection TS)
数学的特殊関数 (special functions TR)
実験的非TS
パターンマッチング
線形代数
std::execution
契約
2Dグラフィックス
 
 
template< class CharT, class Traits, class Alloc, class Pred >
void erase_if( std::basic_string<CharT, Traits, Alloc>& c, Pred pred );
(ライブラリ基礎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"

関連項目

特定の条件を満たす要素を削除する
(関数テンプレート & アルゴリズム関数オブジェクト)
(library fundamentals 2 TS)
特定の値と等しいすべての要素を std::basic_string
(関数テンプレート)