C++算法 fill()函数用于通过使用operator =将相同的新值分配给指定参数内的每个元素[first,end)。
template <class ForwardIterator, class T> void fill (ForwardIterator first, ForwardIterator last, const T& val);
first:一个正向迭代器,指向指定参数内第一个元素的位置。
last:前向迭代器,指向要遍历参数中最后一个元素的位置。
val :要分配给[first,last)参数内的元素的值。
让我们看一个简单的示例来演示fill()的用法:
#include <algorithm> #include <iostream> #include <vector> using namespace std; int main() { vector<int> v(5); fill(v.begin(), v.end(), 2); for_each(v.begin(), v.end(), [](int x) { cout << x << ","; }); return 0; }
输出:
2,2,2,2,2,
让我们看另一个简单的例子:
#include <iostream> //std::cout #include <algorithm> //std::fill #include <vector> //std::vector using namespace std; int main () { vector<int> myvector (8); //myvector: 0 0 0 0 0 0 0 0 fill (myvector.begin(),myvector.begin()+4,5); //myvector: 5 5 5 5 0 0 0 0 fill (myvector.begin()+3,myvector.end()-2,8); //myvector: 5 5 5 8 8 8 0 0 cout << "myvector contains:"; for (vector<int>::iterator it=myvector.begin(); it!=myvector.end(); ++it) cout << ' ' << *it; cout << '\n'; return 0; }
输出:
myvector contains: 5 5 5 8 8 8 0 0
让我们看另一个简单的例子:
#include <vector> #include <algorithm> #include <iostream> int main( ) { using namespace std; vector <int> v1; vector <int>::iterator Iter1; int i; for ( i = 0 ; i <= 9 ; i++ ) { v1.push_back( 5 * i ); } cout << "Vector v1 = ( " ; for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ ) cout << *Iter1 << " "; cout << ")" << endl; //Fill the last 5 positions with a value of 2 fill( v1.begin( ) + 5, v1.end( ), 2 ); cout << "Modified v1 = ( " ; for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ ) cout << *Iter1 << " "; cout << ")" << endl; return 0; }
输出:
Vector v1 = ( 0 5 10 15 20 25 30 35 40 45 ) Modified v1 = ( 0 5 10 15 20 2 2 2 2 2 )
让我们看另一个简单的例子:
#include <algorithm> #include <vector> #include <iostream> #include <iomanip> using namespace std; void print(const vector <int>& v) { vector <int>::const_iterator i; for(i = v.begin(); i != v.end(); i++) { cout << setw(2) << *i << " "; } cout << endl; } int main() { int arr[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; vector <int> v(arr, arr + sizeof(arr)/sizeof(int)); cout << "Vector before fill" << endl; print(v); fill(v.begin() + 4, v.end() - 3, -1); cout << "Vector after fill" << endl; print(v); }
输出:
Vector before fill 0 1 2 3 4 5 6 7 8 9 Vector after fill 0 1 2 3 -1 -1 -1 7 8 9
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)