Функция generate_n
Функция generate_n из заголовочного файла algorithm заполняет
диапазон значениями, которые возвращает переданный генератор.
В первый параметр мы передаем итератор, указывающий на начало заполняемого диапазона,
во второй - количество элементов, которые нужно сгенерировать,
а в третий - функцию или функциональный объект, который будет вызываться для получения значений.
Функция возвращает итератор, указывающий на элемент, следующий за последним заполненным.
Синтаксис
generate_n(first, count, gen)
Пример
Давайте заполним вектор 5 элементами, которые генерирует
лямбда-функция, возвращающая последовательные числа начиная с 1:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector<int> res(5);
int counter = 1;
generate_n(res.begin(), 5, [&counter]() {
return counter++;
});
for (int elem : res) {
cout << elem << " ";
}
cout << endl;
return 0;
}
Результат выполнения кода:
1 2 3 4 5
Пример
Давайте заполним вектор строками, которые генерирует
функция, возвращающая строку "abcde":
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
vector<string> res(3);
generate_n(res.begin(), 3, []() {
return string("abcde");
});
for (const string& elem : res) {
cout << elem << " ";
}
cout << endl;
return 0;
}
Результат выполнения кода:
"abcde" "abcde" "abcde"