#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
class Object
{
public:
Object(const std::string& a_s) : s_(a_s) {}
std::string value() const { return s_; }
private:
std::string s_;
};
bool operator==(const Object& a_obj1, const Object& a_obj2)
{
return a_obj1.value() == a_obj2.value();
}
int main()
{
std::vector<Object> v;
v.push_back(Object("abc"));
v.push_back(Object("ghi"));
v.push_back(Object("def"));
v.push_back(Object("ghi"));
std::for_each(v.begin(),
v.end(),
[](const Object& a_obj)
{
std::cout << a_obj.value() << "\n";
});
v.erase(std::remove(v.begin(), v.end(), Object("ghi")), v.end());
std::cout << "\n";
std::for_each(v.begin(),
v.end(),
[](const Object& a_obj)
{
std::cout << a_obj.value() << "\n";
});
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKY2xhc3MgT2JqZWN0CnsKcHVibGljOgogICAgT2JqZWN0KGNvbnN0IHN0ZDo6c3RyaW5nJiBhX3MpIDogc18oYV9zKSB7fQogICAgc3RkOjpzdHJpbmcgdmFsdWUoKSBjb25zdCB7IHJldHVybiBzXzsgfQpwcml2YXRlOgogICAgc3RkOjpzdHJpbmcgc187Cn07Cgpib29sIG9wZXJhdG9yPT0oY29uc3QgT2JqZWN0JiBhX29iajEsIGNvbnN0IE9iamVjdCYgYV9vYmoyKQp7CiAgICByZXR1cm4gYV9vYmoxLnZhbHVlKCkgPT0gYV9vYmoyLnZhbHVlKCk7Cn0KCmludCBtYWluKCkKewogICAgc3RkOjp2ZWN0b3I8T2JqZWN0PiB2OwoKICAgIHYucHVzaF9iYWNrKE9iamVjdCgiYWJjIikpOwogICAgdi5wdXNoX2JhY2soT2JqZWN0KCJnaGkiKSk7CiAgICB2LnB1c2hfYmFjayhPYmplY3QoImRlZiIpKTsKICAgIHYucHVzaF9iYWNrKE9iamVjdCgiZ2hpIikpOwoKICAgIHN0ZDo6Zm9yX2VhY2godi5iZWdpbigpLAogICAgICAgICAgICAgICAgICB2LmVuZCgpLAogICAgICAgICAgICAgICAgICBbXShjb25zdCBPYmplY3QmIGFfb2JqKQogICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmNvdXQgPDwgYV9vYmoudmFsdWUoKSA8PCAiXG4iOwogICAgICAgICAgICAgICAgICB9KTsKCiAgICB2LmVyYXNlKHN0ZDo6cmVtb3ZlKHYuYmVnaW4oKSwgdi5lbmQoKSwgT2JqZWN0KCJnaGkiKSksIHYuZW5kKCkpOwoKICAgIHN0ZDo6Y291dCA8PCAiXG4iOwogICAgc3RkOjpmb3JfZWFjaCh2LmJlZ2luKCksCiAgICAgICAgICAgICAgICAgIHYuZW5kKCksCiAgICAgICAgICAgICAgICAgIFtdKGNvbnN0IE9iamVjdCYgYV9vYmopCiAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6Y291dCA8PCBhX29iai52YWx1ZSgpIDw8ICJcbiI7CiAgICAgICAgICAgICAgICAgIH0pOwoKICAgIHJldHVybiAwOwp9Cgo=