
C++ Generate()简介
C++中的生成器函数(std::generate)有助于根据生成器函数生成数字,并在指定范围[f, l]内将数值分配给容器中的项目。这个函数必须由用户描述并成功调用,以实现数字的分配。在本专题中,我们将学习C++ Generate()。让我们在下面的章节中更详细地了解一下这个函数。
语法
下面是生成函数的语法。
void generate ( ForwardIterator f, ForwardIterator l, Generator g ) ;
参数
**f:**这里,f是一个前向迭代器,指向容器的第一个项目。
**l:**这里,l是一个前向迭代器,指向容器的最后一项。
g:这 是生成器函数,将在此基础上分配数值。
返回值。由于返回类型是void,所以不会返回任何值。
异常情况。
如果生成函数g或对迭代器的操作出现异常,将抛出一个异常。
当使用无效的参数时,将引起未定义行为。
时间复杂度。
第一个和最后一个之间是线性的。
数据竞赛。
对象在第一个和最后一个之间的范围内被修改。这里,每个对象只被访问一次。
在C++中,generate()算法函数如何工作?
以下是生成器()函数工作所必须遵循的步骤。
1.根据用户要求创建一个任意大小的向量。
vector<int> vt(12);
这里,向量v的大小为12。
2.2. 创建一个有三个参数的generate()方法:一个指向第一项的指针,一个指向第二项的指针,以及一个发生器函数。
generate(vt.begin(), vt.end(), rand);
这里,begin, end, 和rand是三个参数。例如,rand()是一个生成随机数的函数。
3.根据用户的要求,使用迭代器或循环来打印所有的元素。
C++ Generate()的例子
让我们看看CPP中生成函数的一些示例程序。
例子#1
CPP程序使用generate()和rand()函数在限定范围内生成随机数。
代码。
#include <iostream> #include <vector> #include <algorithm> using namespace std; int main(void) { //create vector of size 10 vector<int> vt(10); //generate random numbers generate(vt.begin(), vt.end(), rand); cout << "The random numbers in the vector: " << endl; for (auto i = vt.begin(); i != vt.end(); ++i) cout << *i << endl; return 0; }
输出。

在这个程序中,首先创建一个大小为10的向量。然后在向量大小的范围内生成随机数。如前所述,generate()方法有三个参数,第一个参数指向第一个项目,第二个参数指向最后一个项目。第三个参数是生成函数,其中考虑了rand()方法。rand()方法有助于生成随机数字。然后所有的元素在执行代码时被打印出来。
例子#2
CPP程序通过传递一个函数作为参数来实现生成函数。
代码。
// C++ program to implement std::generate with generator function #include <iostream> #include <vector> #include <algorithm> // Define the generator function g int g() { static int n = 0; return ++n; } using namespace std; int main() { int n; // Declare a vector vtr of size 6 vector<int> vtr(6); // usage of std::generate std::generate(vtr.begin(), vtr.end(), g); //iterator vector<int>::iterator it; for (it = vtr.begin(); it != vtr.end(); ++it) { cout << *it << " "; } return 0; }
输出。

在这个程序中,首先创建一个大小为6的向量。然后调用generate()方法,其中第三个参数是单独定义的生成函数g。在函数g中,数字从0开始递增,直到6结束。在这里,0并不包括在内,因为变量在打印之前就被递增了。在这之后,一个迭代器被用来打印所有的元素。最后,在执行代码时,所有的元素都被打印出来,如结果所示。
例子#3
CPP程序通过传递一条指令而不是一个函数来实现生成函数。
代码。
#include <iostream> #include <vector> #include <algorithm> using namespace std; int main(void) { //create vector of size 10 vector<int> v(10); int i(0); //generate numbers generate(v.begin() , v.end(), [&]{ return i++; }) ; std::cout << "vector is: " ; for (auto vv: v) { std::cout << vv << " " ; } std::cout << " \n "; }
输出。

与第一个程序类似,在这个程序中,也是先创建一个大小为10的向量。generate()方法有三个参数,第一个参数是vector.begin(),第二个参数是vector.end()。第三个参数是i的增量,然后所有的元素在执行代码时被打印出来。
例子 #4
CPP程序使用generate()和rand()函数生成限制范围内的随机数和唯一数。
代码。
#include <iostream> #include <vector> #include <algorithm> using namespace std; int main(void) { //create vector of size 4 vector<int> vt(4); //generate random numbers generate(vt.begin(), vt.end(), rand); cout << "The random numbers in the vector: " << endl; for (auto i = vt.begin(); i != vt.end(); ++i) cout << *i << endl; int i(0); //generate random numbers generate(vt.begin(), vt.end(),[&]{ return i++; }); std::cout << "vector is: " ; for (auto vv: vt) { std::cout << vv << " " ; } std::cout << " \n "; }
输出。

在这个程序中,首先创建一个大小为4的向量。然后使用generate()函数中的rand()函数在向量大小的范围内生成随机数。然后,再次调用generate()函数,其中第三个参数是一条增加变量i的指令。在执行代码时,随机数和范围为4的唯一数字都被打印出来。
结论
C++中的生成器函数(std::generate)有助于根据生成器函数生成数字,并在指定范围[f, l]内将数值分配给容器中的项目。在这篇文章中,对这个函数的更多细节进行了详细解释。
推荐文章
这是一份关于C++生成器()的指南。这里我们讨论了Generate()算法函数在C++中的工作原理,包括语法、参数和例子,以及代码和输出。你也可以看看下面的文章,以了解更多信息