std::generate
Материал из cppreference.com
<tbody>
</tbody>
| Определено в заголовочном файле <algorithm>
|
||
template< class ForwardIt, class Generator > void generate( ForwardIt first, ForwardIt last, Generator g ); |
||
Присваивает каждому элементу диапазона [first, last) значение, сгенерированное заданным функциональным объектом g.
Параметры
[first, last)
|
— | два итератора задающих диапазон элементов для изменения | ||||||
| g | — | generator function object that will be called. The signature of the function should be equivalent to the following: <tbody> </tbody>
Тип | ||||||
| Требования к типам | ||||||||
-ForwardIt должен соответствовать требованиям ForwardIterator.
| ||||||||
Возвращаемое значение
(Нет)
Сложность
Ровно std::distance(first, last) вызовов g() и присваиваний.
Возможная реализация
template<class ForwardIt, class Generator>
void generate(ForwardIt first, ForwardIt last, Generator g)
{
while (first != last) {
*first++ = g();
}
}
|
Пример
Следующий код заполняет вектор случайными числами:
Запустить этот код
#include <algorithm>
#include <iostream>
#include <cstdlib>
int main()
{
std::vector<int> v(5);
std::generate(v.begin(), v.end(), std::rand); // Используем C-функцию rand()
std::cout << "v: ";
for (auto iv: v) {
std::cout << iv << " ";
}
std::cout << "\n";
}
Возможный вывод:
v: 52894 15984720 41513563 41346135 51451456
См. также
| присваивает диапазону элементов определённое значение (шаблон функции) | |
| присваивает результаты последовательных вызовов функции N элементам в диапазоне (шаблон функции) |