我有一个向量(顺序是重要的)的对象(让我们称之为myobj类),我试图一次删除多个对象。C++ remove_if对象的向量
class vectorList
{
vector<*myobj> myList;
};
class myobj
{
char* myName;
int index;
bool m_bMarkedDelete;
}
我在想,最好的办法做到这一点会在标示为删除特定MyObj中的对象,然后对向量调用myList.remove_if()。但是,我并不确定如何使用谓词等。我应该在对象中创建一个成员变量,它允许我说我想删除myobj,然后创建一个谓词来检查是否设置了成员变量?
如何将谓词作为vectorList类的一部分来实现?
它可能不相关,但std :: list保留顺序并具有自己的remove_if函数,该函数速度更快且不需要单独的擦除。 – Ant
@Ant:'list :: remove_if'比在矢量上移除和擦除更快吗?在什么情况下?在我做过的许多合理测试中,情况并非如此。不要以为擦除是一个恒定的列表操作,它会更快。 'std :: vector'的连续性和随机访问保证让它获得了很多性能。 –