计算迭代器中所有元素的最佳方法是什么?
我希望代码等同于此
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)
,但也许有更清楚的东西。
答案 0 :(得分:25)
如果要计算范围内的所有元素。然后您可以使用std::distance
标题中的<iterator>
,如下所示:
int count = std::distance(begin(c), end(c));
应该就够了。
online doc说std::distance
:
计算第一个和最后一个元素的数量。