我想计算无符号长整数向量中0
的数量。是否存在传递给std::count_if
的现有标准函数/函子?或者我自己就像这个例子一样写它?
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));
}
注意:出于兼容性原因,我不会使用C ++ 11。
答案 0 :(得分:7)
std::count(data.begin(), data.end(), v);
会这样做。 (虽然如果向量已排序,您可以使用std::lower_bound
和std::upper_bound
在O(日志N)中获得结果。
您只需要确保v
与完全与vector元素相同的类型 - 除非您告诉编译器您要使用哪个模板实例化。