私はと機能を調べていましたが<algorithm>
、私にはそれらはほぼ同じことをしているように見えますが、定義が異なっています。fill
fill_n
これは本当ですか、そうでない場合、それらはどのように異なりますか?
fill_n
それらの説明の言い回しはほぼ同じようです(MSDNのandから読んだものfill
)。
それらが同じである場合、これらの機能の両方を使用できることの利点は何ですか?
開発者により多くのオプションを提供するだけですか、それとも一方が他方よりも高速ですか?
それらは同じ機能ではありません。 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);