13

私はと機能を調べていましたが<algorithm>、私にはそれらはほぼ同じことをしているように見えますが、定義が異なっています。fillfill_n

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

fill_nそれらの説明の言い回しはほぼ同じようです(MSDNのandから読んだものfill)。

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

開発者により多くのオプションを提供するだけですか、それとも一方が他方よりも高速ですか?

4

1 に答える 1

33

それらは同じ機能ではありません。 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);
于 2012-01-19T05:07:56.313 に答える