Come posso invertire il valore di ritorno di un predicato, e rimuovere gli elementi che restituiscono falso invece di vero?Passando remove_if in remove_not_if
Ecco il mio codice:
headerList.remove_if(FindName(name));
(si prega di ignorare la mancanza di erase)
con FindName un semplice funtore:
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;
}
};
Vorrei qualcosa di simile:
list.remove_if(FindName(name) == false);
Non y et usando C++ 0x, quindi non è permesso lambda, purtroppo. Spero che ci sia una soluzione migliore rispetto alla scrittura di un functor NotFindName.
Grazie, funziona con le seguenti mods: Functor ha bisogno di ereditare da std :: unary_function operatore() deve essere una funzione membro const –
DanDan
In realtà l'eredità non è necessario, ma è necessario per definire il typedef corretto che ti dà gratuitamente. Per quanto riguarda il 'const'-ness, è ovvio :) –