两个迭代器之间有多少个元素

时间:2011-10-09 10:18:08

标签: c++ stl

计算迭代器中所有元素的最佳方法是什么?

我希望代码等同于此

template<typename T,typename S,S val>
struct ConstantFunctor : unary_function<T,S>
{S operator()(const T&) const {return val;}};
template<typename T>
struct TrueFunctor : ConstantFunctor<T,bool,true>{};
...
count_if(c.begin(),c.end(),TrueFunctor());

最好的方法是什么?

我可以使用boost::lambda::constant(true),但也许有更清楚的东西。

1 个答案:

答案 0 :(得分:25)

如果要计算范围内的所有元素。然后您可以使用std::distance标题中的<iterator>,如下所示:

int count = std::distance(begin(c), end(c));

应该就够了。

online docstd::distance

  

计算第一个和最后一个元素的数量。