C++ fill()和fill_n()函數用法(轉)


fill 和fill_n函數是C++ Primer第十二章泛型算法部分內容,並把它們稱為生成和變異算法,也就是說這兩個函數只能對輸入范圍內已存在的元素進行操作。如果試圖對空容器進行fill_n操作,會導致嚴重的運行錯誤,所以在對元素進行寫入操作時要檢查目標的大小是否足以存儲要寫入的元素。

fill函數的作用是:將一個區間的元素都賦予val值。函數參數:fill(vec.begin(), vec.end(), val); val為將要替換的值。

fill_n函數的作用是:參數包括 : 一個迭代器,一個計數器以及一個值。該函數從迭代器指向的元素開始,將指定數量的元素設置為給定的值。
注意: 不能在沒有元素的空容器上調用fill_n函數,但是可以通過下面的方法改進。

fill_n(vec.begin(),10,val);

為了保證算法有足夠的元素存儲輸出數據,我們使用“插入迭代器”(insert iterator),插入迭代器是可以給基礎容器添加元素的迭代器。

使用 back_inserter 的程序需要包含頭文件#include<iterator>,將上面的程序改寫成:

1 #include <iterator>  
2 vector<int> vec; //定義一個空容器  
3 fill_n (back_inserter(vec), 10 val);  

在這個程序中,fill_n() 函數每寫入一個值,都會通過back_inserter生產的插入迭代器實現。效果相當於在vec上調用push_back,在vec末尾添加10個元素。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM