我有一个由来自这样的类的对象组成的向量:
class Destroyable
{//.......
public:
bool isDestroyed();
//.........
};
我将如何擦除所有返回 true 的元素 isDestroy((?
您可以使用std::mem_fn
将指向成员函数的指针调整为具有类显式参数的函数对象。
std::vector<Destroyable> vec = /* some values */
auto last = std::remove_if(vec.begin(), vec.end(), std::mem_fn(&Destroyable::isDestroyed));
vec.erase(last, vec.end());
在 C++20 中,您可以减少样板
std::erase_if(vec, std::mem_fn(&Destroyable::isDestroyed));