#include <algorithm>
#include <iostream>
#include <iterator>
struct xxxy : public binary_function<int, int, bool>
{
bool operator() (int a, int b) const
{
return a == b;
}
};
int main(int argc, char *argv[])
{
set<int> set1, set2;
set<int>::iterator iter;
set1.insert(1);
set1.insert(2);
set1.insert(3);
set2.insert(1);
set2.insert(2);
set1.erase(remove_if(set1.begin(), set1.end(), bind2nd(xxxy(), 2)));
copy(set1.begin(), set1.end(), ostream_iterator<int>(cout, " "));
return 0;
}