函数generate()接收一个区间(有两个参数指定),并将每个元素设置为第三个参数返回的值,而第三个参数是一个不接受任何参数的函数对象。

头文件:#include <algorithm>

比如将容器内的元素填充为随机数,就这一这样编写:

std::vector<int> numbers(1000);
std::generate(numbers.begin(), numbers.end(), std::rand);

函数源码如下:

template<class _FwdIt,
	class _Fn0> inline
	void generate(_FwdIt _First, _FwdIt _Last, _Fn0 _Func)
	{	// replace [_First, _Last) with _Func()
	_DEBUG_RANGE(_First, _Last);
	_DEBUG_POINTER(_Func);
	_Generate(_Unchecked(_First), _Unchecked(_Last), _Func);
	}
template<class _FwdIt,
	class _Fn0> inline
	void _Generate(_FwdIt _First, _FwdIt _Last, _Fn0 _Func)
	{	// replace [_First, _Last) with _Func()
	for (; _First != _Last; ++_First)
		*_First = _Func();
	}

generate()函数将第三个函数对象返回的值,逐个赋予第一个参数和第二个参数所确定区间。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐