13

我正在研究<algorithm>'sfillfill_nfunction,对我来说,它们似乎在做同样的事情,只是定义不同。

这是真的吗?如果不是,它们有何不同?

他们描述的措辞似乎大致相同(我从 MSDN 在fill_n和处读到fill)。

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

只是为开发人员提供更多选择,还是一种比另一种更快?

4

1 回答 1

33

它们的功能不同,不。 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);
于 2012-01-19T05:07:56.313 回答