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

为阵列程序生成测试用例可能是一个繁琐的过程。但是STL(标准模板库)中的generate和generate_n函数可以方便地用随机值填充数组。

null
  • 生成()

    generate函数通过调用生成器函数“gen”将随机值分配给[begin,end]范围内的元素。请注意,begin包括在范围内,但end不包括在内。

    以下代码演示了generate的实现:

    // C++ program to demonstrate generate function in STL
    #include <bits/stdc++.h>
    using namespace std;
    // function to generate random numbers in range [0-999] :
    int randomize()
    {
    return ( rand () % 1000);
    }
    int main ()
    {
    // for different values each time we run the code
    srand ( time (NULL));
    vector< int > vect(10); // declaring the vector
    // Fill all elements using randomize()
    generate(vect.begin(), vect.end(), randomize);
    // displaying the content of vector
    for ( int i=0; i<vect.size(); i++)
    cout << vect[i] << " " ;
    return 0;
    }

    
    

    输出:

    832 60 417 710 487 260 920 803 576 58
    

    注意:由于srand,每次运行代码时,输出都会不同。如果我们删除srand,每次运行代码时都会得到相同的随机数集。

  • 生成 generate_n的作用与从begin迭代器指向的元素开始生成多达n个元素相同。 以下代码演示了generate_n的工作原理:

    // C++ program to demonstrate generate_n() function in STL
    #include <bits/stdc++.h>
    using namespace std;
    // function to generate random numbers in range [0-999] :
    int randomize()
    {
    return ( rand () % 1000);
    }
    int main ()
    {
    // for different values each time we run the code
    srand ( time (NULL));
    vector< int > vect(10); // declaring the vector
    // Fill 6 elements from beginning using randomize()
    generate_n(vect.begin(), 6, randomize);
    // displaying the content of vector
    for ( int i=0; i<vect.size(); i++)
    cout << vect[i] << " " ;
    return 0;
    }

    
    

    输出:

    177 567 15 922 527 4 0 0 0 0
    

    注意:在这里,由于srand的原因,每次运行代码时,输出都会不同。如果我们删除srand,每次运行代码时都会得到相同的随机数集。

如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写评论

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享