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

19

如何计算迭代器中所有元素的数量?

我想要等同于以下代码的效果:

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),但也许有更清晰的方法。


2
为什么不使用 std::distance - Vinzenz
@Vinzenz 这就是我要找的... 谢谢 - Elazar Leibovich
1个回答

34
如果您想要计算一个范围内的所有元素数量,您可以使用 std::distance 函数,它来自于 <iterator> 头文件,用法如下:
int count = std::distance(begin(c), end(c));

这应该足够了。

在线文档关于std::distance的说法如下:

计算first和last之间的元素数量。


6
这是2015年,C++14已经发布,所以C++的默认意义应该是C++14,除非另有版本被提到。 - Nawaz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接