C++ Generate()简介

869 阅读3分钟

C++ Generate()

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; }

输出。

C++ generate() output 1

在这个程序中,首先创建一个大小为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; }

输出。

C++ generate() output 2

在这个程序中,首先创建一个大小为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 "; }

输出。

output 3

与第一个程序类似,在这个程序中,也是先创建一个大小为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 "; }

输出。

output 4

在这个程序中,首先创建一个大小为4的向量。然后使用generate()函数中的rand()函数在向量大小的范围内生成随机数。然后,再次调用generate()函数,其中第三个参数是一条增加变量i的指令。在执行代码时,随机数和范围为4的唯一数字都被打印出来。

结论

C++中的生成器函数(std::generate)有助于根据生成器函数生成数字,并在指定范围[f, l]内将数值分配给容器中的项目。在这篇文章中,对这个函数的更多细节进行了详细解释。

推荐文章

这是一份关于C++生成器()的指南。这里我们讨论了Generate()算法函数在C++中的工作原理,包括语法、参数和例子,以及代码和输出。你也可以看看下面的文章,以了解更多信息

  1. C++ test()
  2. C++中的运算符优先级
  3. C++头文件
  4. 语法