Как я могу отменить возвращаемое значение предиката и удалить элементы, которые возвращают false вместо true?Обращение remove_if в remove_not_if
Вот мой код:
headerList.remove_if(FindName(name));
(не обращайте внимания на отсутствие стирания)
с FindName простой функтор:
struct FindName
{
CString m_NameToFind;
FindInspectionNames(const CString &nameToFind)
{
m_NameToFind = nameToFind;
}
bool operator()(const CHeader &header)
{
if(header.Name == m_NameToFind)
{
return true;
}
return false;
}
};
Я хотел бы что-то вроде:
list.remove_if(FindName(name) == false);
Не у et, используя C++ 0x, поэтому lambdas не допускается, к сожалению. Я надеюсь, что есть более приятное решение, чем создание функции NotFindName.
Спасибо, это работает со следующими модами: Functor нуждается наследовать от станд :: unary_function оператор() должна быть константная функция член –
DanDan
На самом деле наследование не является необходимым, но вам нужно чтобы определить правильный typedef, который он дает вам бесплатно. Что касается 'const' -ess, то это само собой разумеется :) –