Generate_n算法

在C++的标准STL库中, 提供了容器与许多对容器操作的算法, 以及一些其他的东西, 因为不再本文献范畴内则不举例, 通过STL库中已经封装好的容器操作算法,我们可以省去很多要去实现一个容器操作的代码, 要应用STL中的算法, 首先需要引入算法头文件, 如图
Generate_n算法
引入该头文件和我们需要的容器头文件, 就可以通过调用方法的方式实现一些对容器的操作了, 例如拷贝, 旋转, 插入, 排序等等, 该篇主要讲述Generate_n算法, 这是一个对容器内容进行填充的算法, 它有三个参数, 前两个参数指定填充范围, 最后一个参数用来描述填充方式, 也是一种仿函数, 通过返回一个值而实现对容器的填充.举例如图

Generate_n算法

图中, 在main函数中先创建了一个整型的数组arr, 它的长度为8, 接着使用generate_n算法, 如图中第一个参数arr, 其实为数组arr的首地址, 也就是说这里我指定它从数组头开始填充, 第二个参数为8也就是说从头开始填充8次, 此时因为数组arr长度仅为8, 所以实际上也就是填充整个数组, 第三个参数为一个仿函数, 此处用的是lamda写法, 它返回一个0-20之间的随机数, 接着调用for_each算法进行输出, 因不在本文献范围内则不多加描述, 此处意义为输出数组arr从头到尾的元素, 运行程序得到输出结果, 如图
Generate_n算法
可见此时我们的数组arr已经被填充完整, 此时修改第二个参数为5, 并修改第一个参数为arr + 1, 即从第二个位置开始填充5次, 如图
Generate_n算法
得到输出结果如图
Generate_n算法
其中第一个数和后两个数是因为未对数组进行初始化而导致, 只需先将数组初始化为0即可, 如图
Generate_n算法
得到输出结果如图
Generate_n算法