// rm_if.cpp: Алгоритм remove_if.
#include <iostream> #include <vector> #include <algorithm> #include <iterator>
using namespace std;
void out(const char *s, const vector<int> &v) { cout << s;
copy(v.begin(), v.end(),
ostream_iterator<int>(cout, " "));
cout << endl; }
bool condfint x) { return x <= 2; }
int main()
{ vector<int> v;
vector<int>::iterator new_end;
v.push_back(l); v.push_back(4); v.push_back(l);
v.push_back(3); v.push_back(1); v.push_back(2);
out("Initial sequence v:\n", v);
new_end = remove_if(v.beginf), v.endf), cond);
v.erase(new_end, v.endf));
out("After erasing all elements <= 2:\n", v) ;
return 0; }
Эта программа выдает:
Initial sequence v:
14 13 12
After erasing all elements <= 2:
4 3
Как и remove, алгоритм remove_if является стабильным, поэтому совпадение порядка следования элементов 4 и 3 в результирующей последовательности с их порядком в исходной последовательности не является случайным.
<< назад вперед >>