Ich möchte die Zahl 0
in einem Vektor von vorzeichenlosen langen ganzen Zahlen zählen. Gibt es eine vorhandene Standardfunktion/Funktor, die an std::count_if
übergeben werden kann? Oder soll ich es selbst so schreiben wie dieses Beispiel?Existierender Standard Funktor/Funktion um Gleichheit zu 0 zu prüfen?
class is_equal
{
private:
unsigned long int v;
public:
is_equal(unsigned long int value) : v(value) {}
bool operator() (unsigned long int x) { return x == this->v; }
};
unsigned long int count_zero(const std::vector<unsigned long int>& data)
{
return std::count_if(data.begin(), data.end(), is_equal(0));
}
Hinweis: ich nicht C++ verwenden 11 für Kompatibilitätsgründen.
Sie können einfach ['std :: count'] (http://en.cppreference.com/w/cpp/algorithm/count) mit einem einzigen Wert verwenden. – BoBTFish
Was ist mit 'std :: equal_to' mit' std :: bind2nd'? –
Sie meinen wie ['std :: equal_to'] (http://en.cppreference.com/w/cpp/utility/functional/equal_to)? Aber es ist besser, einfach 'std :: count' zu verwenden, wie bereits vorgeschlagen. –