#include <iostream>
#include <list>
#include <algorithm>
using std::list;
using std::cout;
using std::endl;
class N {
private:
int number;
int equal;
public:
N(int n) : number(n), equal(0) {}
bool operator() (int) {
return ++equal == number;
}
};
template <typename T>
inline void print(const T &data)
{
for (const auto &element : data) {
cout << element << ' ';
}
cout << endl;
}
int main()
{
list<int> lst = { 1, 2, 3, 4, 5, 6, 7 };
print(lst);
list<int>::iterator pos;
pos = remove_if(lst.begin(), lst.end(), N(6));
lst.erase(pos, lst.end());
print(lst);
}
/*
run:
1 2 3 4 5 6 7
1 2 3 4 5 7
*/