#include <iostream>
#include <set>
#include <algorithm>
using namespace std;
class remover {
std::set<int> &s;
public:
remover(std::set<int>& theSet) : s(theSet) {}
void operator()(int val) { s.erase(val); }
};
int main() {
std::set<int> set1, set2;
set1.insert(1); set1.insert(2); set1.insert(3); set1.insert(4); set1.insert(5);
set2.insert(4); set2.insert(6);
for_each(set2.begin(), set2.end(), remover(set1));
// Print result: // Expect 1 2 3 5
std::cout << "set1: ";
for (std::set<int>::const_iterator it=set1.begin(); it != set1.end(); it++)
{
std::cout << *it << " ";
}
std::cout << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c2V0PgojaW5jbHVkZSA8YWxnb3JpdGhtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgcmVtb3ZlciB7CglzdGQ6OnNldDxpbnQ+ICZzOwpwdWJsaWM6CiAgICByZW1vdmVyKHN0ZDo6c2V0PGludD4mIHRoZVNldCkgOiBzKHRoZVNldCkge30KICAgIHZvaWQgb3BlcmF0b3IoKShpbnQgdmFsKSB7IHMuZXJhc2UodmFsKTsgfQp9OwoKaW50IG1haW4oKSB7CiAgICBzdGQ6OnNldDxpbnQ+IHNldDEsIHNldDI7CgogICAgc2V0MS5pbnNlcnQoMSk7IHNldDEuaW5zZXJ0KDIpOyBzZXQxLmluc2VydCgzKTsgc2V0MS5pbnNlcnQoNCk7IHNldDEuaW5zZXJ0KDUpOwogICAgc2V0Mi5pbnNlcnQoNCk7IHNldDIuaW5zZXJ0KDYpOwoKICAgIGZvcl9lYWNoKHNldDIuYmVnaW4oKSwgc2V0Mi5lbmQoKSwgcmVtb3ZlcihzZXQxKSk7CgogICAgLy8gUHJpbnQgcmVzdWx0OiAvLyBFeHBlY3QgMSAyIDMgNQogICAgc3RkOjpjb3V0IDw8ICJzZXQxOiAiOwogICAgZm9yIChzdGQ6OnNldDxpbnQ+Ojpjb25zdF9pdGVyYXRvciBpdD1zZXQxLmJlZ2luKCk7IGl0ICE9IHNldDEuZW5kKCk7IGl0KyspCiAgICB7CiAgICAgICAgc3RkOjpjb3V0IDw8ICppdCA8PCAiICI7CiAgICB9CiAgICBzdGQ6OmNvdXQgPDwgc3RkOjplbmRsOwoKICAgIHJldHVybiAwOwp9