Próbuję filtrować wektor, aby zawierał tylko określoną wartość.Czy można przekazać dodatkowy parametr do predykatu?
np. Upewnij się, że wektor zawiera tylko elementy o wartości "abc".
W tej chwili staram się to osiągnąć z remove_copy_if
.
Czy istnieje jakiś sposób przekazania dodatkowego parametru do predykatu podczas korzystania z jednego z algorytmów 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);
mam nadzieję przekazać następującą funkcję jako orzecznik, ale wydaje się bardziej prawdopodobne, że będzie to po prostu skończyć porównując aktualną wartość badane przez remove_copy_if
a następnym.
bool is_invalid(const std::string &str, const std::string &wanted)
{
return str.compare(wanted) != 0;
}
Mam wrażenie, ja prawdopodobnie zbliża się to źle więc wszelkie sugestie będą mile widziane!
Dzięki
Po prostu zastanawiam się - do czego służy wektor z identycznymi elementami? – Zane
Próbowałem uczynić mój przykład tak prostym, jak to tylko możliwe, więc miało to sens :) Zrobiłem to, aby usunąć elementy z wektora pasującego do określonego wzorca (z regex). – noko