我有一个 std::list 类,并且想要删除标记为删除的条目。我正在使用 std::remove_if 和擦除。
class MyClass
{
bool isDone(MyData& myData)
{
return myData.isDone();
}
void removeIfDone(std::list<MyData>& myList)
{
std::list<MyData>::iterator it =
remove_if(myList.begin(), myList.end(),
boost::bind(&MyClass::isDone, this, _1));
myList.erase(it, myList.end());
}
};
我在一个小型处理器上运行,其内存分配和释放非常昂贵。此删除在我的应用程序中调用了数千次 new 和 delete。
我以前boost::ref
在将非平凡变量作为绑定参数传递时使用过,但在这种情况下,我认为可能是仿函数本身的创建和销毁或它的复制导致了问题。
我想做类似的事情
boost::bind(&MyClass::isDone, boost::ref(this), boost::ref(_1));
我找不到关于正在创建和销毁什么的文档。所以我的简单问题是如何提高效率?