• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

    最終更新日時(UTC):
    が更新

    履歴 編集

    function template
    <flat_map>

    std::erase_if

    namespace std {
      template<class Key,
               class T,
               class Compare,
               class KeyContainer,
               class MappedContainer,
               class Predicate>
      typename flat_map<Key, T, Compare, KeyContainer, MappedContainer>::size_type
        erase_if(flat_map<Key, T, Compare, KeyContainer, MappedContainer>& c,
                 Predicate pred);
    }
    

    概要

    指定した条件に合致する要素とその分の領域を、コンテナから削除する。

    述語関数オブジェクトには、キーではなく、要素全体 (キーと値のpair) が渡されるので注意。

    事前条件

    • KeyTがムーブ代入可能であること

    効果

    メンバ変数として保持しているコンテナcの各要素eについて、bool(pred(pair<const Key&, const T&>(e)))Eとして、Etrueであるすべての要素を削除する。

    戻り値

    削除した要素数を返す。

    計算量

    正確にsize()回だけ述語適用する。

    #include <iostream>
    #include <flat_map>
    
    int main()
    {
      std::flat_map<int, char> fm = {
        {3, 'a'},
        {1, 'b'},
        {4, 'c'}
      };
    
      // コンテナfmから、キー1をもつ要素をすべて削除する
      std::erase_if(fm, [](const auto& x) { return x.first == 1; });
    
      for (const auto& [key, value] : fm) {
        std::cout << key << ':' << value << std::endl;
      }
    }
    

    出力

    3:a
    4:c
    

    バージョン

    言語

    • C++23

    処理系