La libreria standard C++ e/o Boost hanno qualcosa di simile alla funzione filter
trovata in lingue funzionali?"filtro" funzione di ordine superiore in C++
La funzione più vicina che ho trovato era std::remove_copy_if
ma sembra che stia facendo l'opposto di quello che voglio. boost::lambda
ha qualche funzione per ottenere una versione negata del mio predicato (simile a not
in Haskell)? Potrei negare il mio predicato e usarlo con std::remove_copy_if
quindi.
Si noti che non sto chiedendo come scrivere la funzione filter
in C++; Sto solo chiedendo se la libreria standard e/o Boost già forniscono tale funzione.
Grazie in anticipo.
Come è 'std :: remove_copy_if()' opposto di quello che vuoi? Qual è l'opposto del contrario? Se si desidera rimuovere solo elementi in posizione, utilizzare remove/cancella linguaggio: 'container.erase (std :: remove_if (container.begin(), container.end(), pred()), container.end()); – wilx
@wilx: voglio che gli elementi che soddisfano il predicato siano mantenuti e altri rimossi. – missingfaktor