Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Sinh test case với generate() và generate_n() trong C++

C++ STL cung cấp hai thuật toán tiện lợi để điền giá trị vào container bằng hàm sinh (generator): std::generate và std::generate_n.

1. std::generate

Điền toàn bộ phạm vi [first, last) bằng các giá trị trả về từ hàm 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 x : data) cout << x << " ";
    return 0;
}
449 180 785 629 547 912 581 520 534 778 670 302 345 965 107

2. std::generate_n

Điền n phần tử đầu tiên bắt đầu từ first.

#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); // chỉ 6 phần tử đầu
    for (int x : data) cout << x << " ";
    return 0;
}
540 744 814 771 254 913 0 0 0 0 0 0 0 0 0

So sánh

HàmTham sốSố phần tử điền
generatefirst, last, genlast - first
generate_nfirst, n, genn

Ứng dụng: Sinh dữ liệu test, khởi tạo container với giá trị phức tạp (lambda, functor).