C++ 根据成员函数从矢量中擦除对象



我有一个由来自这样的类的对象组成的向量:

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));

最新更新