我正在研究<algorithm>
'sfill
和fill_n
function,对我来说,它们似乎在做同样的事情,只是定义不同。
这是真的吗?如果不是,它们有何不同?
他们描述的措辞似乎大致相同(我从 MSDN 在fill_n
和处读到fill
)。
如果它们相同,那么同时使用这两个功能有什么好处?
只是为开发人员提供更多选择,还是一种比另一种更快?
它们的功能不同,不。 std::fill
填充一个范围,给定一个开始和结束迭代器。 std::fill_n
给定一个起始迭代器和一个数量,填充一定数量的元素。 fill_n
对于输出迭代器很有用,当您无法获得结束迭代器时,例如 with 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);