В ниже код mKnownRSList имеет тип:std :: vector Стереть - он автоматически выделяет выделение?
std::vector<RSAddress *>
где RSAddress класс я написал. Functiop 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;
}
Я бы второй borisbn. Это самый безопасный подход. – Arun