Remove all odd numbers from the vector using remove_if : remove_if « STL Algorithms Modifying sequence operations « C++ Tutorial






#include <algorithm>
#include <vector>
#include <list>
#include <iostream>

using namespace std;

template <typename elementType>
bool IsOdd (const elementType& number){
    return ((number % 2) == 1);
}

int main (){
    list <int> l;

    for (int nCount = 0; nCount < 10; ++ nCount)
        l.push_back (nCount);

    list <int>::const_iterator li;
    for ( li = l.begin (); li != l.end (); ++ li )
        cout << *li << ' ';

    vector <int> v (l.size () * 2);

    vector <int>::iterator iLastPos;
    iLastPos = copy ( l.begin (), l.end (), v.begin () );

    vector <int>::iterator i;

    i = remove_if (v.begin (), v.end (), IsOdd <int>);    // The predicate

    v.erase (i , v.end ());
    vector <int>::iterator vi;
    for ( vi = v.begin (); vi != v.end (); ++ vi )
        cout << *vi << ' ';

    return 0;
}








24.11.remove_if
24.11.1.Use predicate in std::remove_if
24.11.2.remove_if for list
24.11.3.removeif, bind2nd() and list
24.11.4.Use remove_if() to remove all elements from list that are greater than 10.
24.11.5.Remove all odd numbers from the vector using remove_if
24.11.6.Remove value from vector with condition with remove_if()
24.11.7.Copy elements from vector to another vector, removing elements greater than 9 (remove_copy_if)