2012-01-19 47 views
3

我正在調查<algorithm>fillfill_n函數,對我來說他們似乎對同樣的事情做了些許不同的定義。是fill_n和填充相同的功能,但具有不同的參數重載?

這是真的,如果不是,它們有什麼不同?

他們的描述的措辭似乎大致相同(我從MSDN讀取fill_nfill)。

如果它們相同,那麼這兩個函數都可用的優點是什麼?

這是給開發者更多的選擇,還是比另一個更快?

回答

20

它們不是相同的功能,沒有。 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); 
+0

的例子幫助它清除掉了很多,感謝大家的幫助。 – mmurphy

+0

好解釋! –

相關問題