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àm | Tham số | Số phần tử điền |
|---|---|---|
| generate | first, last, gen | last - first |
| generate_n | first, n, gen | n |
Ứng dụng: Sinh dữ liệu test, khởi tạo container với giá trị phức tạp (lambda, functor).