#include <iostream>
#include <algorithm>
#include <vector>
struct Entity { bool alive = true; bool GetAlive() { return alive; } };
int main()
{
std::vector<Entity *> bulletEnemyObjects = {
new Entity, new Entity, new Entity, new Entity, new Entity, new Entity
};
bulletEnemyObjects[3]->alive = false;
bulletEnemyObjects[4]->alive = false;
std::cout << "before count: " << bulletEnemyObjects.size() << "\n";
bulletEnemyObjects.erase(
std::remove_if(bulletEnemyObjects.begin(), bulletEnemyObjects.end(),
[](Entity *p) { return !p->GetAlive(); }
),
bulletEnemyObjects.end()
);
std::cout << "after count: " << bulletEnemyObjects.size() << "\n";
for (Entity *p : bulletEnemyObjects)
delete p;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8dmVjdG9yPgoKc3RydWN0IEVudGl0eSB7IGJvb2wgYWxpdmUgPSB0cnVlOyBib29sIEdldEFsaXZlKCkgeyByZXR1cm4gYWxpdmU7IH0gfTsKCmludCBtYWluKCkKewoJc3RkOjp2ZWN0b3I8RW50aXR5ICo+IGJ1bGxldEVuZW15T2JqZWN0cyA9IHsKCQluZXcgRW50aXR5LCBuZXcgRW50aXR5LCBuZXcgRW50aXR5LCBuZXcgRW50aXR5LCBuZXcgRW50aXR5LCBuZXcgRW50aXR5Cgl9OwoJYnVsbGV0RW5lbXlPYmplY3RzWzNdLT5hbGl2ZSA9IGZhbHNlOwoJYnVsbGV0RW5lbXlPYmplY3RzWzRdLT5hbGl2ZSA9IGZhbHNlOwoJc3RkOjpjb3V0IDw8ICJiZWZvcmUgY291bnQ6ICIgPDwgYnVsbGV0RW5lbXlPYmplY3RzLnNpemUoKSA8PCAiXG4iOwoJCiAgICBidWxsZXRFbmVteU9iamVjdHMuZXJhc2UoCiAgICAgICAgc3RkOjpyZW1vdmVfaWYoYnVsbGV0RW5lbXlPYmplY3RzLmJlZ2luKCksIGJ1bGxldEVuZW15T2JqZWN0cy5lbmQoKSwKICAgICAgICAgICAgW10oRW50aXR5ICpwKSB7IHJldHVybiAhcC0+R2V0QWxpdmUoKTsgfQogICAgICAgICAgICApLAogICAgICAgIGJ1bGxldEVuZW15T2JqZWN0cy5lbmQoKQogICAgICAgICk7CgoJc3RkOjpjb3V0IDw8ICJhZnRlciBjb3VudDogIiA8PCBidWxsZXRFbmVteU9iamVjdHMuc2l6ZSgpIDw8ICJcbiI7CgoJZm9yIChFbnRpdHkgKnAgOiBidWxsZXRFbmVteU9iamVjdHMpCgkJZGVsZXRlIHA7Cn0K