【发布时间】:2011-10-31 18:49:26
【问题描述】:
我有一个对象向量(顺序很重要)(我们称它们为 myobj 类),我试图一次删除多个对象。
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:
list::remove_if比删除和擦除矢量更快?在什么情况下?在我做过的许多合理的测试中,情况肯定不是这样。不要仅仅因为擦除是列表的恒定时间操作就认为它会更快。std::vector的连续性和随机访问保证为其带来了极大的性能。