Должен ли я создать переменную-член в объекте, которая позволяет мне сказать
что я хочу удалить myobj, а затем создать предикат, который
проверяет, установлена ли переменная-член?
Разве вы этого не сделали? Разве это не то, для чего m_bMarkedDelete
? Вы бы написали предикат так:
bool IsMarkedToDelete(const myobj & o)
{
return o.m_bMarkedDelete;
}
Тогда:
myList.erase(
std::remove_if(myList.begin(), myList.end(), IsMarkedToDelete),
myList.end());
Или, используя лямбды:
myList.erase(
std::remove_if(myList.begin(), myList.end(),
[](const myobj & o) { return o.m_bMarkedDelete; }),
myList.end());
Если в вашем классе нет этого участника, и вы спрашиваете нас, должен ли он, тогда я бы сказал нет. Какие критерии вы использовали, чтобы решить пометить его для удаления? Используйте те же критерии в своем предикате, например:
bool IndexGreaterThanTen(const myobj & o)
{
return o.index > 10;
}
note - Написанные мною функции, конечно, недействительны, поскольку все ваши участники являются личными. Так что вам нужен какой-то способ доступа к ним.