Подтвердить что ты не робот

Сколько элементов существует между двумя итераторами

Каков наилучший способ подсчета всех элементов в итераторе?

Я хочу, чтобы код был эквивалентен этому

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), но, возможно, там что-то более ясное.

4b9b3361

Ответ 1

Если вы хотите подсчитать все элементы в диапазоне. то вы можете использовать std::distance, из <iterator>, например:

int count = std::distance(begin(c), end(c));

Этого должно быть достаточно.

онлайн-документ говорит о std::distance:

Вычисляет количество элементов между первым и последним.