【发布时间】:2013-03-22 11:08:54
【问题描述】:
在下面的代码中 mKnownRSList 的类型是:
std::vector<RSAddress *>
RSAAddress 是我写的一个类。函数 removeItem 从此向量中删除一个项目。
我的问题是,在调用 mKnownRSList 上的擦除函数后,我是否应该取消分配 std::remove_if 返回的迭代器所指向的地址。目前,我在最后一个被取消引用的迭代器上明确发出删除调用。您认为这种方法正确吗?谢谢。
void
ABC::removeItem(RSAddress * rsAddr)
{
auto last =
std::remove_if(mKnownRSList.begin(),
mKnownRSList.end(),
[rsAddr]( RSAddress * o )
{
return (*o == *rsAddr);
});
mKnownRSList.erase(last, mKnownRSList.end());
delete *last;
}
【问题讨论】: