#include <iostream>
#include <vector>
#include <set>
#include <algorithm>
using namespace std;
int main() {
vector<int> v = { 1, 1, 2, 3, 4, 4, 4, 5 };
std::set<int> set(v.begin(), v.end());
v.erase(
std::remove_if(
v.begin(),
v.end(),
[&set] (int item) { return !set.erase(item); }),
v.end());
// print the results -- sadly no range-based for available on ideone
for (auto i = v.begin(); i != v.end(); ++i) {
cout << *i << " ";
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c2V0PgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtYWluKCkgewogICAgdmVjdG9yPGludD4gdiA9IHsgMSwgMSwgMiwgMywgNCwgNCwgNCwgNSB9OwogICAgc3RkOjpzZXQ8aW50PiBzZXQodi5iZWdpbigpLCB2LmVuZCgpKTsKICAgIHYuZXJhc2UoCiAgICAgICAgc3RkOjpyZW1vdmVfaWYoCiAgICAgICAgICAgIHYuYmVnaW4oKSwgCiAgICAgICAgICAgIHYuZW5kKCksIAogICAgICAgICAgICBbJnNldF0gKGludCBpdGVtKSB7IHJldHVybiAhc2V0LmVyYXNlKGl0ZW0pOyB9KSwgCiAgICAgICAgdi5lbmQoKSk7CgogICAgLy8gcHJpbnQgdGhlIHJlc3VsdHMgLS0gc2FkbHkgbm8gcmFuZ2UtYmFzZWQgZm9yIGF2YWlsYWJsZSBvbiBpZGVvbmUKICAgIGZvciAoYXV0byBpID0gdi5iZWdpbigpOyBpICE9IHYuZW5kKCk7ICsraSkgewogICAgICAgIGNvdXQgPDwgKmkgPDwgIiAiOwogICAgfQogICAgCiAgICAKICAgIHJldHVybiAwOwp9