我有一个对象向量(顺序很重要),其中包含多个对象(我们称之为myobj类),我想一次性删除多个对象。
class vectorList
{
vector<*myobj> myList;
};
class myobj
{
char* myName;
int index;
bool m_bMarkedDelete;
}
我想最好的方法是标记要删除的特定myobj对象,然后在vector上调用myList.remove_if()。但是,我不确定如何使用谓词等内容。我应该在对象中创建一个成员变量,允许我声明我想要删除myobj,并创建一个检查成员变量是否设置的谓词吗?如何将谓词作为vectorList类的一部分实现?
list::remove_if
在向量上比remove
和erase
更快吗?在什么情况下?在我所做的许多合理测试中,这肯定不是这种情况。不要假设仅因为对于列表而言删除是一个常数时间操作,它就会更快。std::vector
的连续性和随机访问保证了它有很高的性能。 - Benjamin Lindley