generate()函数的使用
函数generate()接收一个区间(有两个参数指定),并将每个元素设置为第三个参数返回的值,而第三个参数是一个不接受任何参数的函数对象。比如将容器内的元素填充为随机数,就这一这样编写:std::vector<int> numbers(1000);std::generate(numbers.begin(), numbers.end(), std::rand());...
·
函数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()函数将第三个函数对象返回的值,逐个赋予第一个参数和第二个参数所确定区间。
更多推荐
已为社区贡献1条内容
所有评论(0)