値のシーケンスを増やしてイテレータ範囲を埋めるために、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 ++()バージョンよりも広く使用できると思います。<