我正在研究<algorithm>
的fill
和fill_n
函数,对我来说,它们似乎做了同样的事情,但定义不同。
这是真的吗?如果不是,它们有什么不同?
他们描述的措辞似乎大致相同(我在MSDN的fill_n
和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);