今后的stl算法部分就不贴cpluplus的原文了,简要的介绍为主。
generate原型:
template <class ForwardIterator, class Generator> void generate (ForwardIterator first, ForwardIterator last, Generator gen);
其行为类似如下:
|
|
#include <iostream> #include <algorithm> #include <vector> using namespace std; static int i=0; int addone(){ return i++; } void generate1(){ vector<int> vi(10); cout<<"at first,vi="; for_each(vi.begin(),vi.end(),[](int i){cout<<i<<" ";}); cout<<endl; generate(vi.begin(),vi.end(),addone); cout<<"after generate(vi.begin(),vi.end(),addone);\n vi="; for_each(vi.begin(),vi.end(),[](int i){cout<<i<<" ";}); cout<<endl; }运行截图:
可以看到,使用generate之后,vector里面的值被填充了!
generate_n原型:
该函数是使用gen的返回值填充指定位置及之后的n个元素的函数。
其行为类似:
|
|
#include <iostream> #include <algorithm> #include <vector> using namespace std; void generaten(){ vector<int> vi(10); cout<<"at first,vi="; for_each(vi.begin(),vi.end(),[](int i){cout<<i<<" ";}); cout<<endl; int i=0; generate_n(vi.begin(),7,[&i](){return i++;}); cout<<"after generate(vi.begin(),7,[&i](){return i++;});\n vi="; for_each(vi.begin(),vi.end(),[](int i){cout<<i<<" ";}); cout<<endl; }
运行截图:
可以看到,只填充了7个元素!
——————————————————————————————————————————————————————————————————
//写的错误或者不好的地方请多多指导,可以在下面留言或者点击左上方邮件地址给我发邮件,指出我的错误以及不足,以便我修改,更好的分享给大家,谢谢。
转载请注明出处:http://blog.csdn.net/qq844352155
author:天下无双
Email:coderguang@gmail.com
2014-9-13
于GDUT
——————————————————————————————————————————————————————————————————
STL algorithm算法generate和generate_n(22)
原文地址:http://blog.csdn.net/qq844352155/article/details/39251633