¿Cómo puedo invertir el valor de retorno de un predicado y eliminar los elementos que devuelven falso en lugar de verdadero?Convertir remove_if en remove_not_if
Aquí está mi código:
headerList.remove_if(FindName(name));
(por favor, ignora la falta de borrado)
con FindName un funtor simple:
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;
}
};
me gustaría algo así como:
list.remove_if(FindName(name) == false);
Not y et utilizando C++ 0x, por lo que lambdas no está permitido, por desgracia. Espero que haya una solución más agradable que escribir un functor NotFindName.
Gracias, funciona con las siguientes modificaciones: Functor necesita para heredar de std :: unary_function operador() tiene que haber un método constante –
DanDan
En realidad herencia no es necesario, pero es necesario para definir el typedef apropiado que te da de forma gratuita. En cuanto a la 'const'-dad, es evidente :) –