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 ++根据成员函数从向量中擦除对象[重复]的主要内容,如果未能解决你的问题,请参考以下文章

C++的构造函数的作用:初始化类对象的数据成员

C++的构造函数的作用:初始化类对象的数据成员

C++的构造函数的作用:初始化类对象的数据成员

C++ 初始化器列表功能:调用函数而不初始化成员?

类的数据成员为数组,怎么样根据键盘输入的数据顺序建立对象?

具有 const 成员的结构向量