C++ STL算法: fill和fill_n函数的使用

fill()在C++中找到的用法只有一种:为元素序列填入给定值
A.原型如下:

template<class _FwdIt,
	class _Ty> inline
	void fill(_FwdIt _First, _FwdIt _Last, const _Ty& _Val)
	{	// copy _Val through [_First, _Last)
	_DEBUG_RANGE(_First, _Last);
	_Fill(_Unchecked(_First), _Unchecked(_Last), _Val);
	}

B.函数模板:fill(arr,arr+size , indx)

C.参数说明:
arr: 数组
size:数组元素个数
indx:需要替换的值

D.函数功能: 从数组头结点开始到指定数组元素中替换成指定替换值
fill_n()在C++中找到的用法有两种不过这里就讲解简单的一种:给指定的迭代器为起始位置,为指定个数的元素设置值。
A.原型如下:

template<class _OutIt,
	class _Diff,
	class _Ty> inline
	_OutIt fill_n(_OutIt _Dest, _Diff _Count, const _Ty& _Val)
	{	// copy _Val _Count times through [_Dest, ...)
	_DEBUG_POINTER_IF(0 < _Count, _Dest);
	return (_Fill_n(_Dest, _Count, _Val,
		_Is_checked(_Dest)));
	}

B.函数模板:fill_n(arr,size , indx)

C.参数说明:
arr: 数组
size:数组元素个数
indx:需要替换的值

D.函数功能: 从数组头结点开始到指定数组元素中替换成指定替换值
例子如下:

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

void main() {

//定义迭代器
	vector<int> vec (8);

//输出覆盖前的迭代器
	cout << "fill前:" << ends;
	for (int i = 0; i < 8; i++) {
		cout  << vec[i] << ends;
	}
	cout << endl;

	fill(vec.begin(), vec.begin() + 3, 5);
	fill_n(vec.begin() + 4, 2,9);

//输出覆盖后的迭代器
	cout << "fill后:" << ends;
	for (int i = 0; i< 8; i++)
	{
		cout << vec[i] << ends;
	}
	cout << endl;
}

你可能感兴趣的:(C++ STL算法: fill和fill_n函数的使用)