#include <iostream>
#include <string>
#include <vector>
#include <iterator>
#include <algorithm>
using namespace std;

bool f(int i) {return i > 2;}

int main() {
	vector<int> v;
	v.push_back(1);
	v.push_back(2);
	v.push_back(3);
	v.push_back(4);
	v.push_back(5);
	vector<int>::iterator it;
	it = std::remove_if( v.begin(), v.end(), f);  // shift v.erase( it, v.end());  }
	copy( v.begin(), it, ostream_iterator<int>(cout));
	// but it will still gives us vector of size 5
	copy( v.begin(), v.end(), ostream_iterator<int>(cout));
	// so let's erase
	v.erase( it, v.end());
	copy( v.begin(), v.end(), ostream_iterator<int>(cout));
	return 0;
}