Преобразование remove_if в remove_not_if

Как я могу отменить возвращаемое значение предиката и удалить элементы, которые возвращают false вместо true?

Вот мой код:

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);

Еще не использую c ++ 0x, поэтому лямбда-выражения, к сожалению, не разрешены. Я надеюсь, что есть более подходящее решение, чем написание функтора NotFindName.

6
задан DanDan 5 October 2010 в 14:27
поделиться