void fill( ForwardIterator _First, ForwardIterator _Last, const Type& _Val );となっています。注意すべき点は範囲に_Lastが入っていないという点です。
文字列などの配列にも有効です。
では、サンプルを見てみましょう。
// fill01.cpp #include <iostream> #include <algorithm> #include <vector> using namespace std; int main() { int i; char szStr[16]; vector<int> v; memset(szStr, '\0', sizeof(szStr)); fill(szStr, szStr + 2, 'A'); fill(szStr + 2, szStr + 5, 'B'); fill(szStr + 5, szStr + 8, 'C'); cout << szStr << endl; v.push_back(3); v.push_back(10); v.push_back(100); for (i = 0; i < 3; i++) cout << v[i] << endl; vector::iterator pv; pv = v.begin(); fill(pv, pv + 2, 1); for (i = 0; i < 3; i++) cout << v[i] << endl; return 0; }
実行結果です。
似たようなサンプルです。
// fill02.cpp #include <iostream> #include <algorithm> #include <vector> using namespace std; int main() { int i; int array[10]; vector<char> v; for (i = 0; i < 10; i++) array[i] = i; fill(array, array + 2, 0); for (i = 0; i < 7; i++) cout << *(array + i) << endl; for (i = 'A'; i <= 'Z'; i++) v.push_back(i); for (i = 0; i <= 'Z' - 'A'; i++) cout << v[i]; cout << endl; fill(v.begin(), v.end(), 'Q'); for (i = 0; i <= 'Z' - 'A'; i++) cout << v[i]; cout << endl; return 0; }
今回も簡単でした。
Update Apr/11/2005 By Y.Kumei