std::generate
Материал из cppreference.com
Определено в заголовочном файле <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:
Тип Ret должен быть таков, что объект типа ForwardIt может быть разыменован, а результату разыменования присвоено значение типа Ret. | ||||||
Требования к типам | ||||||||
-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 элементам в диапазоне (шаблон функции) |