Функция шаблона iota была добавлена в стандартную библиотеку для заполнения диапазона итератора возрастающей последовательностью значений.
template<typename ForwardIterator, typename Tp>
void
iota(ForwardIterator first, ForwardIterator last, Tp value)
{
for (; first != last; ++first)
{
*first = value;
++value;
}
}
Большинство других шаблонов в <numeric>
имеют версии, которые принимают операторы, указанные пользователем.Имея это:
template<typename ForwardIterator, typename Tp, typename Operator>
void
iota(ForwardIterator first, ForwardIterator last, Tp value, Operator op)
{
for (; first != last; ++first)
{
*first = value;
op(value);
}
}
было бы удобно, если вы не хотите (или не можете) перегрузить оператор ++ () для Tp.Я бы нашел эту версию более широко используемой, чем версия оператора по умолчанию ++ ().<</p>