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 重载 operator++() 会很方便。我会发现这个版本比默认的 operator++() 版本更有用。<