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