fill関数は、ある範囲の要素を新しい値で埋めます。
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