#include <iostream>
#include <list>
#include <iterator>
#include <algorithm>
using namespace std;
struct X {
int ID;
};
int main() {
list<X> list;
X t;
t.ID=1;
list.push_back(t);
t.ID=2;
list.push_back(t);
t.ID=3;
list.push_back(t);
t.ID=4;
list.push_back(t);
cout << "before:" << endl;
for (auto v : list) {
cout << v.ID << endl;
}
list.erase(
remove_if(
list.begin()
, list.end()
, [](X x){ return x.ID == 3; }
)
, list.end()
);
cout << "after:" << endl;
for (auto v : list) {
cout << v.ID << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bGlzdD4KI2luY2x1ZGUgPGl0ZXJhdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IFggewogIGludCBJRDsKfTsKCmludCBtYWluKCkgewoJbGlzdDxYPiBsaXN0OwoJWCB0OwoJdC5JRD0xOwoJbGlzdC5wdXNoX2JhY2sodCk7Cgl0LklEPTI7CglsaXN0LnB1c2hfYmFjayh0KTsKCXQuSUQ9MzsKCWxpc3QucHVzaF9iYWNrKHQpOwoJdC5JRD00OwoJbGlzdC5wdXNoX2JhY2sodCk7Cgljb3V0IDw8ICJiZWZvcmU6IiA8PCBlbmRsOwoJZm9yIChhdXRvIHYgOiBsaXN0KSB7CgkJY291dCA8PCB2LklEIDw8IGVuZGw7Cgl9CglsaXN0LmVyYXNlKAogICAgICAgIHJlbW92ZV9pZigKICAgICAgICAgICAgbGlzdC5iZWdpbigpCiAgICAgICAgLCAgIGxpc3QuZW5kKCkKICAgICAgICAsICAgW10oWCB4KXsgcmV0dXJuIHguSUQgPT0gMzsgfQogICAgICAgICkKICAgICwgICBsaXN0LmVuZCgpCiAgICApOwogICAgY291dCA8PCAiYWZ0ZXI6IiA8PCBlbmRsOwoJZm9yIChhdXRvIHYgOiBsaXN0KSB7CgkJY291dCA8PCB2LklEIDw8IGVuZGw7Cgl9CglyZXR1cm4gMDsKfQ==