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

How many elements are there between two iterators

本文关键字:多少 之间 元素 两个 迭代器      更新时间:2023-10-16

计算迭代器中所有元素的最佳方法是什么?

我想要等价的代码

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));

应该够了。

网上文档说std::distance:

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