最終更新日時: 2026年02月17日 23時22分33秒 (JST)
Akira Takahashi が更新

履歴 編集

function template
<list>

# std::list::remove_if

    template <class Predicate>
    void remove_if(Predicate pred);                // (1) C++03
    template <class Predicate>
    size_type remove_if(Predicate pred);           // (1) C++20
    template <class Predicate>
    constexpr size_type remove_if(Predicate pred); // (1) C++26

## 概要

条件一致する全ての要素を削除する

## 効果

コンテナの全ての要素に対する各イテレータ`i`において、`pred(*i) == true`となる要素を削除する。
削除された要素に対するイテレータおよび参照は無効となる。

## 戻り値

- C++03 : なし
- C++20 : 削除された要素数を返す

## 例外

`pred`呼び出しが例外を投げなければ、この関数は例外を投げない

## 計算量

ちょうど`size()`回だけ述語を適用する

## 例

    #include <iostream>
    #include <list>

    int main()
    {
      std::list<int> ls = {3, 1, 4, 1};

      ls.remove_if([](int x) { return x == 1; }); // 値1の要素を全て削除

      for (int x : ls) {
        std::cout << x << std::endl;
      }
    }

### 出力

    3
    4

## 参照

- P0646R1 Improving the Return Value of Erase-Like Algorithms I: list/forward list
- P3372R3 constexpr containers and adaptors