STL: fill,fill_n,generate,generate_n
fill
Assigns the same new value to every element in a specified range.
template<class ForwardIterator, class Type>
void fill(
ForwardIterator _First,
ForwardIterator _Last,
const Type& _Val
);
fill_n
Assigns a new value to a specified number of elements in a range beginning with a particular element.
template<class OutputIterator, class Size, class Type>
void fill_n(
OutputIterator _First,
Size _Count,
const Type& _Val
);
注:_Count必须小于等于_Last-_First.
此外,对于char* 或者wchar_t*的数组,最好是使用memset或wmemset。
generate
Assigns the values generated by a function object to each element in a range.
template<class ForwardIterator, class Generator>
void generate(
ForwardIterator _First,
ForwardIterator _Last,
Generator _Gen
);
例如,用随机数值填充vector。

template<class T>
struct display
{
void operator()(const T& val){
cout<<val<<' ';
}
}; int rand100(){
return rand()%100;
} int main()
{
vector<int> vec(5);
srand(time(0));
generate(vec.begin(),vec.end(),rand100);
cout<<"vector: ";
for_each(vec.begin(),vec.end(),display<int>());
cout<<endl; getchar();
}

generate_n
Assigns the values generated by a function object to a specified number of elements in a range and returns to the position one past the last assigned value.
template<class OutputIterator, class Diff, class Generator>
void generate_n(
OutputIterator _First,
Diff _Count,
Generator _Gen
);
此外,<numeric>中的iota可以使用递增序列填充一个指定的区域。这个函数好像是新增的,不晓得是不是标准STL中的成员。
iota
Stores a starting value, beginning with the first element and filling with successive increments of that value (_Value++) in each of the elements in the interval [_First, _Last).
template<class ForwardIterator, class Type>
void iota(
ForwardIterator _First,
ForwardIterator _Last,
Type _Value
);
参考:http://www.cnblogs.com/freewater/archive/2013/03/07/2947614.html
http://blog.csdn.net/mashen1989/article/details/7693348
STL: fill,fill_n,generate,generate_n的更多相关文章
- C++ fill fill_n generate generate_n
#include <iostream>#include <algorithm>#include <vector>#include <list>#incl ...
- 填充整个区间(fill,fill_n,generate和generate_n)
fill 将value值填充整个区间,不能为OutputIterator,因为fill会用到first和last,outputIterator无法做相等的测试 template <class F ...
- STL六大组件之——算法小小小小的解析
参考自侯捷的<stl源码剖析> stl算法主要分为非可变序列算法(指不直接修改其所操作的容器内容的算法),可变序列算法(指可以修改它们所操作的容器内容的算法),排序算法(包括对序列进行排序 ...
- 变易算法 - STL算法
欢迎访问我的新博客:http://www.milkcu.com/blog/ 原文地址:http://www.milkcu.com/blog/archives/mutating-algorithms.h ...
- STL常用遍历算法for_each和transform的比较
for_each()和transform()算法比较 1)STL 算法 – 修改性算法 for_each() copy() copy_backward() transform() merge ...
- C++ STL 常用遍历算法
C++ STL 常用遍历算法 STL的容器算法迭代器的设计理念 1) STL的容器通过类模板技术,实现数据类型和容器模型的分离 2) STL的迭代器技术实现了遍历容器的统一方法:也为STL的算法提供了 ...
- STL经常使用遍历算法for_each和transform的比較
for_each()和transform()算法比較 1)STL 算法 – 改动性算法 for_each() copy() copy_backward() transform() merge ...
- STL--STL和她的小伙伴们:
STL--概述: 标准模板库(StandardTemplateLibrary,STL),是C++程序设计语言标准模板库.STL是由Alexander Stepanov.Meng Lee和David R ...
- cb41a_c++_STL_算法_填充新值fill_generate
cb41a_c++_STL_算法_填充新值fill_generatefill(b,e,v)fill_n(b,n,v),填充n个vgenerate(b,e,p)generate_n(b,n,p) gen ...
随机推荐
- ftp安装和虚拟用户创建
安装 1.安装 sudo apt-get install vsftpd 2 查看安装结果 安装完毕,检查vsftpd进程是否已启动,可以查看进程或者查看监听端口 ps -eaf|grep vsftpd ...
- ThinkPHP项目笔记之函数篇
说到函数,可能有人会想:框架的C(控制器)通牌都是函数构成的,没有必要讲吧. 当然,我要说的是,公共函数:function.php,该文件就是为了开发一下功能准备的,比方说,某个功能,a地方可用,b地 ...
- Laravel5.1 文件管理
Laravel提供了一套很好用的文件系统 方便于管理文件夹和文件,支持Amazon S3和Rackspace云存储等驱动. 1 配置 文件系统的配置文件在 config/filesyetems.php ...
- jdbc的简单实现demo
直接上代码吧,只是因为上篇的心血来潮.总结哈 import java.sql.Connection; import java.sql.DriverManager; import java.sql.Re ...
- 开发VS2008 AddIn 入门Sample
本文主要介绍的是VS2008插件开发 环境要求:VS2008:.Net3.5 目标:开发插件功能为“在VS中创建文本文档,并在文本开头输入//This code was created For Tes ...
- 自定义控件_VIewPager显示多个Item
一直以来想搞明白这个不完全的VIewPager是怎么做到的,有幸看到这片篇文章 有二种实现方法 1.设置的属性 1.clipChildren属性 2.setPageMargin 3.更新Item外界面 ...
- golang 之 channel
channel的机制是先进先出 无缓冲的channel: 如果你给channel赋值了,那么必须要读取它的值,不然就会造成阻塞. chreadandwrite :=make(chan int) cho ...
- 【BZOJ3681】Arietta 树链剖分+可持久化线段树优化建图+网络流
[BZOJ3681]Arietta Description Arietta 的命运与她的妹妹不同,在她的妹妹已经走进学院的时候,她仍然留在山村中.但是她从未停止过和恋人 Velding 的书信往来.一 ...
- python3个人习惯的gitignore
简介 就是普通的.gitignore # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] *$py.class # C ext ...
- Hibernate的多对多映射关系
example: 老师(teacher)和学生(Student)就是一个多对多的关系吧?老师可以有多个学生,学生也可以由多个老师,那在Hibernate中多对多是怎样实现的呢?? 在Hibernate ...