fill_n和fill填充相同的函数,但参数重载不同?

mmu*_*phy 8 c++ msdn visual-c++ stl-algorithm

我一直在寻找到<algorithm>fillfill_n功能,以及他们给我似乎做同样的事情,但只是有不同的定义.

这是真的,如果不是,它们有什么不同?

他们描述的措辞似乎是差不多的(我在从MSDN阅读fill_nfill).

如果它们相同,那么可以使用这两种功能有什么好处?

它只是给开发人员更多的选择,还是比另一个更快?

Ben*_*ley 25

它们不是同一个功能,不是. 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);
Run Code Online (Sandbox Code Playgroud)