STL: generate ,geterate_n
在随机生成一定范围不重复数时用到random_shuffle函数,之前填充数组都是用for循环,
想到之前python中的range生成序列,于是在C++中找到对应的generate用来生成所需数组。
用来生成元素,并填充到一个序列中
generate:
template <class ForwardIterator, class Generator>
void generate ( ForwardIterator first, ForwardIterator last, Generator gen )
{
while (first != last) {
*first = gen();
++first;
}
}
Generator gen生成器,是一个不接受参数,且有返回参数的函数,first和last是生成的范围。
generate_n:
void generate_n (OutputIterator first, Size n, Generator gen);
first插入起始位置,n插入元素个数,gen元素生成器.
#include<iostream>
#include<vector>
#include<algorithm>
#include<time.h>
#include <iterator>
using namespace std; int nextNum() {
static int n = ;
return n++; } class Range_generate{
private:
int m_Value;
int m_interval;
public:
Range_generate(int value,int interval) {m_Value=value-interval;m_interval=interval;}
int operator()(){
return m_Value+=m_interval;}
}; //Lambda是函数对象(Function Object)的语法糖,Lambda最终会被转换成所示的Functor类 int main(){
srand((unsigned int) time(NULL));
vector<int> array();
generate(array.begin(),array.end(),[]{return rand()%;});
for(vector<int>::iterator ptr=array.begin();ptr!=array.end();){
cout<<*ptr++<<" ";
//ptr++;
}
cout<<endl;
generate(array.begin(),array.end(),Range_generate(,)); //首项1,间隔2
ostream_iterator<int> screen(cout," ");
copy(array.begin(),array.end(),screen);
system("pause");
return ;
}
STL: generate ,geterate_n的更多相关文章
- An overview of time series forecasting models
An overview of time series forecasting models 2019-10-04 09:47:05 This blog is from: https://towards ...
- STL: fill,fill_n,generate,generate_n
fill Assigns the same new value to every element in a specified range. template<class ForwardIter ...
- C++的STL
今天,看一段代码的时候发现只一句话就做了个排序,是这样的: sort(rotateArray.begin(),rotateArray.end()); 很震惊,后来查了一下sort的用法, sort函数 ...
- c++中级 STL基础学习(二)
deque 和vector差不多,可以在前端后端插入,一般用deque取代vector,vector只能在后端插入push_back().deque还可以push_front(),但是deque后端插 ...
- STL中的算法小结
()要运用STL的算法,首先必须包含头文件<algorithm>,某些STL算法用于数值处理,因此被定义于头文件<numeric> ()所有STL算法都被设计用来处理一个或多个 ...
- hdu 4666:Hyperspace(最远曼哈顿距离 + STL使用)
Hyperspace Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Tota ...
- STL学习小结
STL就是Standard Template Library,标准模板库.这可能是一个历史上最令人兴奋的工具的最无聊的术语.从根本上说,STL是一些"容器"的集合,这些" ...
- STL六大组件之——算法小小小小的解析
参考自侯捷的<stl源码剖析> stl算法主要分为非可变序列算法(指不直接修改其所操作的容器内容的算法),可变序列算法(指可以修改它们所操作的容器内容的算法),排序算法(包括对序列进行排序 ...
- STL算法
STL算法部分主要由头文 件<algorithm>,<numeric>,<functional>组成.要使用 STL中的算法函数必须包含头文件<algorit ...
随机推荐
- Unix/Linux环境C编程入门教程(5) Red Hat Enterprise Linux(RHEL)环境搭建
Unix/Linux版本众多,我们推荐Unix/Linux初学者选用几款典型的Unix/Linux操作系统进行学习. 通过./a.out ./Y.out执行出结果,证明C++程序编译成功,也就说明li ...
- [Leetcode][Python]21: Merge Two Sorted Lists
# -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com' 21: Merge Two Sorted Listshttps://oj.le ...
- 杭电 1272 POJ 1308 小希的迷宫
这道题是我学了并查集过后做的第三个题,教我们的学姐说这是并查集的基础题,所以有必要牢牢掌握. 下面就我做这道题的经验,给大家一些建议吧!当然,我的建议不是最好的,还请各位大神指出我的错误来,我也好改正 ...
- DataGuard failover dg role自动切换模式测试
1,在脚本中代入create db flash backup point for recover dg 2,测试前主备库状态(备库现角色验证,主库监听状态-->有意stop) 主要验证思路, 脚 ...
- lodash的中文文档(不全)
http://dingliang-321.iteye.com/blog/2184747
- IOS开发环境更换后重新制作Provisioning Profile证书详解
新换了台Macbook,又折腾了一遍Provisioning Profile证书,苹果的证书繁锁复杂,每次制作都相当麻烦,而且Provisioning Profile证书是与设备绑定的,所以更换开发环 ...
- mysql基础示例
创建数据库.创建表等: //php中按天创建表 $sql = "create database if not exists ".$db_name; $date_time_array ...
- 什么是CTS、CLS和CLR
CTS.CLS和CLR是.NET框架的基本概念,但往往成为程序员们忽视的部分.清楚理解三者的概念,有助于.NET程序员编写高效安全的.NET程序. 所涉及到的知识点 • .NET的基本概念 • ...
- switch_case,&&,||,条件操作符和逗号操作符,循环语句
一.switch-case switch-case语句主要用在多分支条件的环境中,在这种环境中使用if语句会存在烦琐且效率不高的弊端. switch(expression) { case const ...
- 堆分配与栈分配---SAP C++电面(5)/FEI
一直以来总是对这个问题的认识比较朦胧,我相信很多朋友也是这样的,总是听到内存一会在栈上分配,一会又在堆上分配,那么它们之间到底是怎么的区别呢?为了说明这个问题,我们先来看一下内存内部的组织情况. 从上 ...