在迭代器中计数所有元素的最佳方式是什么?
我想要代码相当于此
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),但也许有一些更清晰的东西.
解决方法
如果要计数范围内的所有元素.那么你可以使用
std::distance
,从
<iterator>
标题,像这样:
int count = std::distance(begin(c),end(c));
应该够了
online doc说关于std :: distance:
Calculates the number of elements between first and last.