C ++根据成员函数从向量中擦除对象[重复]
Posted
技术标签:
【中文标题】C ++根据成员函数从向量中擦除对象[重复]【英文标题】:C++ Erase objects from vector based on member function [duplicate] 【发布时间】:2020-05-22 08:07:55 【问题描述】:我有一个由此类对象组成的向量:
class Destroyable
//.......
public:
bool isDestroyed();
//.........
;
我将如何删除所有为 isDestroyed() 返回 true 的元素?
【问题讨论】:
【参考方案1】:您可以使用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));
【讨论】:
以上是关于C ++根据成员函数从向量中擦除对象[重复]的主要内容,如果未能解决你的问题,请参考以下文章