填充整个区间(fill,fill_n,generate和generate_n)
fill
将value值填充整个区间,不能为OutputIterator,因为fill会用到first和last,outputIterator无法做相等的测试
template <class ForwardIterator, class T> void fill( ForwardIterator first, ForwardIterator last,const T& value);
fill_n
会将数值value填充[first,first+n),返回值为first+n,可以用outputIterator
template <class OutputIterator,class size,class T> OutputIterator fill_n( OutputIterator first, OutputIterator last,size n,const T& value);
generate
template <class ForwardIterator, class Generator> void generate ( ForwardIterator first, ForwardIterator last, Generator gen ) { while (first != last) { *first = gen(); ++first; } }
该函数是使用gen函数产生的值填充范围内元素的值。参数gen是一个接受空参数,并返回一个对应的值的函数或者是函数对象之类的。
generate_n
template <class OutputIterator, class Size, class Generator> OutputIterator generate_n ( OutputIterator first, Size n,const Generator gen ) { ) { *first = gen(); ++first; --n; } }
返回值是first+n,generate和generate_n中的gen会被调用n(或first+n)次,而非只在循环外调用一次,这一点很重要,因为Generate不一定会在每次调用时候都返回相同的结果,因此generate允许从文件读入,取局部状态的值并更改。
#include <iostream> #include <vector> #include <algorithm> #include <iterator> using namespace std; class F { private: static int i; public: int operator()() { return ++i; } }; ; int main() { vector<); generate(v.begin(),v.end(),rand);//调用c语言中的rand函数,填满v generate_n(v.begin(),,F());//调用函数对象 for(auto i:v) cout<<i<<' '; cout<<endl; ; }
填充整个区间(fill,fill_n,generate和generate_n)的更多相关文章
- STL: fill,fill_n,generate,generate_n
fill Assigns the same new value to every element in a specified range. template<class ForwardIter ...
- C++ fill fill_n generate generate_n
#include <iostream>#include <algorithm>#include <vector>#include <list>#incl ...
- 图像处理之泛洪填充算法(Flood Fill Algorithm)
泛洪填充算法(Flood Fill Algorithm) 泛洪填充算法又称洪水填充算法是在很多图形绘制软件中常用的填充算法,最熟悉不过就是 windows paint的油漆桶功能.算法的原理很简单,就 ...
- HTML5 Canvas 填充与描边(Fill And Stroke)
HTML5 Canvas 填充与描边(Fill And Stroke) 演示HTML5 Canvas Fill 与Stroke文字效果,基于Canvas如何实 现纹理填充与描边. 一:颜色填充与描边 ...
- 图像处理------泛洪填充算法(Flood Fill Algorithm) 油漆桶功能
泛洪填充算法(Flood Fill Algorithm) 泛洪填充算法又称洪水填充算法是在很多图形绘制软件中常用的填充算法,最熟悉不过就是 windows paint的油漆桶功能.算法的原理很简单,就 ...
- STL_算法_填充新值(fill、fill_n、generate、generate_n)
C++ Primer 学习中... 简单记录下我的学习过程 (代码为主) 全部容器适用 fill(b,e,v) //[b,e) 填充成v fill_n(b,n,v) ...
- c++ 容器填充指定长度(fill_n)
#include <iostream> // cout #include <algorithm> // fill_n #include <vector> // ve ...
- 变易算法 - STL算法
欢迎访问我的新博客:http://www.milkcu.com/blog/ 原文地址:http://www.milkcu.com/blog/archives/mutating-algorithms.h ...
- STL--STL和她的小伙伴们:
STL--概述: 标准模板库(StandardTemplateLibrary,STL),是C++程序设计语言标准模板库.STL是由Alexander Stepanov.Meng Lee和David R ...
随机推荐
- 1.4socket服务器打印信息的四种不同方式()
方式一 socker 服务器 # -*- coding: utf-8 -*- import sys,os,multiprocessing from socket import * serverHost ...
- java中String的认识
String不是Java的基本数据类型.String类是final类,故不可继承. String 和 StringBuffer之间的区别非常大,Java平台提供了两个类,两者都是包含多个字符的的字符数 ...
- linux安装jdk、tomcat、maven、mysql
安装SZ rz与Gcc 首先需要tomcat的jar包,打算rz上去,发现没有安装 ./configure的时候发现缺少gcc和cc 安装解决: 再次执行成功安装了sz和rz 创建软链接然后就可以使用 ...
- h5页面嵌入android app时遇到的问题
1.h5页面 通过 .css("transform") 或 .style.transform 获取 transform属性,并通过 split 方法解析 页面translateY ...
- L295 how to turn down a job but keep a good relationship with the hiring manager
Let’s say you’re on the hunt for a new job. Three interviews in, you realize it’s not the place for ...
- 框架:MVC
MVC 一.介绍 MVC是模型-视图-控制器的缩写,一种软件思想,强制性的把应用程序的输入.处理和输出分开.可以和任何的重定向能解耦. 三部分的任务说明: 视图:获取数据,显示数据 模型:处理数据 控 ...
- lvs的FULLNAT
- spark:ML和MLlib的区别
ML和MLlib的区别如下: ML是升级版的MLlib,最新的Spark版本优先支持ML. ML支持DataFrame数据结构和Pipelines,而MLlib仅支持RDD数据结构. ML明确区分了分 ...
- Js代码一些要素
---恢复内容开始--- 条件语句 is(条件){ 语句 }else { 语句 } {}在js中我们把他叫代码块.如果代码块里内容没有执行完,语句就不会向下执行. 代码块是一个独立的整体.如果js中莫 ...
- Strut2在Action-Result的配置文件内转到jsp页面时用URL传递参数
Struts.2.5.5版本在Action配置文件中内有如下result,其中role是Action类中的属性,在配置文件中用到OGNL表达式 <result name="input& ...