今后的stl算法部分就不贴cpluplus的原文了,简要的介绍为主。
generate原型:
std::generate
template <class ForwardIterator, class Generator>
void generate (ForwardIterator first, ForwardIterator last, Generator gen);
该函数是使用gen函数产生的值填充范围内元素的值。
其行为类似如下:
1
2
3
4
5
6
7
8
|
template <class ForwardIterator, class Generator>
void generate ( ForwardIterator first, ForwardIterator last, Generator gen )
{
while (first != last) {
*first = gen();
++first;
}
}
|
|
参数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原型:
std::generate_n
template <class OutputIterator, class Size, class Generator>
OutputIterator generate_n (OutputIterator first, Size n, Generator gen);
该函数是使用gen的返回值填充指定位置及之后的n个元素的函数。
其行为类似:
1
2
3
4
5
6
7
8
|
template <class OutputIterator, class Size, class Generator>
void generate_n ( OutputIterator first, Size n, Generator gen )
{
while (n>0) {
*first = gen();
++first; --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
——————————————————————————————————————————————————————————————————
分享到:
相关推荐
algorithm algorithm STL 算法 algorithm_头文件_说明 algorithm algorithm STL 算法 algorithm_头文件_说明 algorithm algorithm STL 算法 algorithm_头文件_说明
stlshow_stl分层_STL分层_stlmatlab_STL切片_stl分层.zip
用于三维光学形貌扫描完成后,生成的stl文件的读取,并形成俯视投影云图
NX二次开发-UFUN导出STL函数UF_STD_put_solid_in_stl_file博客文章源代码
STL算法备忘单+来自STL算法视频系列的示例代码_C++_下载.zip
stlshow_stl分层_STL分层_stlmatlab_STL切片_stl分层_源码.rar.rar
STL切片算法,一种快速高效解决stl文件切片的程序算法讲解
文档包含70个stl例子,适合初学者练习使用
看STL文件的小软件,可以自由的实现旋转,等功能,现在只是一小部分,以后会发后面的
打开stl文件,将其还原为3d实体并在3d场景中显示。同时,在数组中显示3d顶点xyz和法向量。点击模拟来观察3d恢复过程。
读取 点云数据 STL 文件 分块化编程
在matlab实现STL分层,自定义厚度,参考意义
读取二进制stl文件,并计算3d模型的体积
stl文件读取,用于读取stl文件,在进行其他操作
09_07_IO_STL标准模板09_07_IO_STL标准模板09_07_IO_STL标准模板09_07_IO_STL标准模板09_07_IO_STL标准模板09_07_IO_STL标准模板09_07_IO_STL标准模板09_07_IO_STL标准模板09_07_IO_STL标准模板09_07_IO_STL标准模板...
STL 最新源代码
STL课件_C++_课件stl_c++课件_源码.zip
上传stl文件,等到模型的体积、尺寸等参数
STL所有算法介绍STL所有算法介绍STL所有算法介绍
SGI STL是由SGI公司开发的STL库.这份STL可以用在VC上.