【问题标题】:Are fill_n and fill the same function but with different parameter overloads?fill_n 和 fill 是同一个函数,但参数重载不同吗?
【发布时间】:2012-01-19 05:04:53
【问题描述】:
我正在研究<algorithm> 的fill 和fill_n 函数,在我看来,它们似乎在做同样的事情,只是定义不同。
这是真的吗?如果不是,它们有何不同?
它们的描述措辞似乎大致相同(我从 MSDN 上的 fill_n 和 fill 读到)。
如果它们相同,这两个功能都可用有什么好处?
只是给开发者更多的选择,还是一个比另一个快?
【问题讨论】:
标签:
c++
visual-c++
msdn
stl-algorithm
【解决方案1】:
它们的功能不同,不。 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);