remove_if()

remove_ifは、コンテナの要素の中の条件に一致した要素を削除します。

remove_if()は次の書式で使います。


    template iter remove_if(iter first, iter last, pred pr);
    void list::remove_if(binder2nd > pr);
    

firstは削除するかどうか調べる要素の先頭、endは削除するかどうか調べる要素の最後、prは削除する条件です。

最初の書式のアルゴリズムは、条件prに一致する要素を削除します。コンテナから要素を実際に削除したい場合はerase()を使います。
二番目の書式の関数は、条件prに一致する要素をすべてリストから削除します。

次の例は、vectorから値が奇数である要素を削除する例です。


    #include <vector>
    #include <iostream>
    #include <algorithm>
    
    using namespace std;
    
    int main()
    {
      vector<int> v;
      vector <int>::iterator iter;
    
      for (int i = 1; i < 11; i++)
        v.push_back(i);
    
      for (iter = v.begin(); iter != v.end(); iter++)
        cout << *iter << ",";
      cout << endl;
    
      vector<int>::iterator result = std::remove_if(v.begin(), v.end(), [](int x) { return x % 2 != 0; });
      // remove(v.begin(), v.end(), 5);
    
      for (iter = v.begin(); iter != result; iter++)
        cout << *iter << ",";
      cout << endl;
    
      return 0;
    }
  

実行結果は次のようになります。


    1,2,3,4,5,6,7,8,9,10,
    2,4,6,8,10,
  

関連項目

vector


コンテナ目次 C++目次 inserted by FC2 system