在以下代碼mKnownRSList的類型爲:std :: vector擦除 - 是否自動取消分配?
std::vector<RSAddress *>
其中RSAddress是I類寫到。功能removeItem從此矢量中刪除項目。
我在這裏的問題是,在調用mKnownRSList上的擦除函數之後,我是否應該取消分配由std :: remove_if返回的迭代器指向的地址。目前,我明確地對名爲last的取消引用迭代器發出刪除調用。你認爲這種方法是正確的嗎?謝謝。
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;
}
我會第二borisbn。這是最安全的方法。 – Arun 2013-03-22 12:02:53