2012-01-19 8 views
3

私は<algorithm>fillfill_nの機能を調べていましたが、私には同じことをしているようですが、ちょっと違った定義がされています。fill_nで、同じ機能を満たしていますが、パラメータのオーバーロードが異なりますか?

これは本当ですか、そうでない場合はどのように違いますか?

説明の文言はほぼ同じです(MSDN fill_nおよびfill)。

これらが同じ場合、これらの機能を両方とも使用できる利点は何ですか?

これは、開発者にもっと多くのオプションを与えることですか、それとも他の方法よりも速いのですか?

答えて

20

これらは同じ機能ではありません。 std::fillは、開始および終了イテレータを指定して範囲を設定します。 std::fill_nは、開始イテレータと量を指定して、一定数の要素を塗りつぶします。あなたが最後のイテレータを取得するための方法はありませんときfill_nは、std::ostream_iteratorと同様に、出力イテレータに便利です:

std::fill(std::ostream_iterator<int>(std::cout), ???, x); 
                ^^^ 
              what do I put here? 

std::fill_n(std::ostream_iterator<int>(std::cout), 25, x); 
+0

例が多く、それを明確にアップ助け、助けてくれてありがとう。 – mmurphy

+0

良い説明! –

関連する問題