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

Ela*_*ich 14 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());
Run Code Online (Sandbox Code Playgroud)

最好的方法是什么?

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

Naw*_*waz 25

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

int count = std::distance(begin(c), end(c));
Run Code Online (Sandbox Code Playgroud)

这应该够了.

在线文档说,有关std::distance:

计算第一个和最后一个之间的元素数.

  • @davidhigh:这是2015年,C++ 14发布了,所以除非提到版本,否则C++的默认含义应该是C++ 14. (4认同)