生成测试用例(C++ 中的 generate() 和 generate_n())


在本节中,我们将了解如何使用 C++ STL 函数来生成测试用例。有时,为数组程序生成测试用例可能是一个非常复杂且低效的过程。C++ 提供了两种生成测试用例的方法。这些方法如下:

generate() 方法

C++ 函数 std::algorithm::generate() 将连续调用 gen 返回的值赋给 first 到 last 范围内的元素。它接受三个参数 first、last 和 gen,它们分别是指向初始位置的前向迭代器、指向最终位置的后向迭代器以及不带参数且返回值的生成器函数。

示例

让我们来看下面的实现,以便更好地理解:

 在线演示

#include <bits/stdc++.h>
using namespace std;
int create_random() {
   return (rand() % 1000);
}
int main () {
   srand(time(NULL));
   vector<int> data(15);
   generate(data.begin(), data.end(), create_random);
   for (int i=0; i<data.size(); i++)
      cout << data[i] << " " ;
}

输出

449 180 785 629 547 912 581 520 534 778 670 302 345 965 107

generate_n() 方法

C++ 函数 std::algorithm::generate_n() 将连续调用 gen 返回的值赋给前 n 个元素。它接受三个参数 first、n 和 gen,它们分别是指向初始位置的前向迭代器、调用次数以及不带参数且返回值的生成器函数。

示例

让我们来看下面的实现,以便更好地理解:

 在线演示

#include <bits/stdc++.h>
using namespace std;
int create_random() {
   return (rand() % 1000);
}
int main () {
   srand(time(NULL));
   vector<int> data(15);
   generate_n(data.begin(), 6, create_random);
   for (int i=0; i<data.size(); i++)
      cout << data[i] << " " ;
}

输出

540 744 814 771 254 913 0 0 0 0 0 0 0 0 0

更新于: 2020-08-27

228 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.