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

在迭代器中计数所有元素的最佳方式是什么?

我想要代码相当于此

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.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...