以下のコードでは、 mKnownRSListのタイプは次のとおりです。
std::vector<RSAddress *>
ここで、RSAddressは私が作成したクラスです。functionop 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;
}