Sto provando a filtrare un vettore in modo che contenga solo un valore specifico.È possibile passare un parametro aggiuntivo a un predicato?
ad es. Assicurati che il vettore contenga solo elementi del valore "abc".
In questo momento, sto cercando di raggiungere questo con remove_copy_if
.
C'è un modo per passare un parametro aggiuntivo a un predicato quando si utilizza uno degli algoritmi di std?
std::vector<std::string> first, second;
first.push_back("abc");
first.push_back("abc");
first.push_back("def");
first.push_back("abd");
first.push_back("cde");
first.push_back("def");
std::remove_copy_if(first.begin(), first.end(), second.begin(), is_invalid);
spero di passare la seguente funzione come un predicato ma sembra più probabile che questo sarebbe solo finire confrontando il valore corrente all'esame remove_copy_if
e la successiva.
bool is_invalid(const std::string &str, const std::string &wanted)
{
return str.compare(wanted) != 0;
}
Ho la sensazione che probabilmente mi sto avvicinando a questo torto così ogni suggerimento sarebbe apprezzato!
Grazie
Basta chiedersi: per cosa si utilizza un vettore con solo elementi identici? – Zane
Ho cercato di rendere il mio esempio il più semplice possibile, quindi aveva senso :) Quello che ho fatto con questo è stato rimuovere elementi da un vettore che si adattano a un determinato modello (con espressioni regolari). – noko