std :: generate_n в C ++

Опубликовано: 31 Декабря, 2021

std :: generate - это алгоритм STL, который используется для генерации чисел на основе функции генератора, а затем присваивает эти значения элементам в контейнере в диапазоне [first, last).

Функция генератора должна быть определена пользователем, и она вызывается последовательно для присвоения номеров.
Теперь может быть сценарий, в котором мы хотим присвоить значения только первым n элементам, для этого у нас есть другой алгоритм STL std :: generate_n , который имеет следующий синтаксис:
Функция шаблона:

OutputIterator generate_n (сначала OutputIterator, размер n, генератор gen);

first: итератор вывода, указывающий на начало контейнера.
n: количество элементов, которым необходимо присвоить значение, используя функцию генератора.
gen: функция генератора для генерации значений.

Возврат:
У него нет возвращаемого типа void, такого как std :: generate, но на самом деле 
он возвращает итератор, указывающий на элемент, следующий за последним элементом 
чье значение было создано.
// C++ program to demonstrate the use of std::generate_n
#include <iostream>
#include <vector>
#include <algorithm>
// Defining the generator function
int gen()
{
static int i = 0;
return ++i;
}
using namespace std;
int main()
{
int i;
// Declaring a vector of size 10
vector< int > v1(10);
// using std::generate_n
std::generate_n(v1.begin(), 10, gen);
vector< int >::iterator i1;
for (i1 = v1.begin(); i1 != v1.end(); ++i1) {
cout << *i1 << " " ;
}
return 0;
}

Выход:

1 2 3 4 5 6 7 8 9 10

Эта статья предоставлена Мригендрой Сингхом . Если вам нравится GeeksforGeeks, и вы хотели бы внести свой вклад, вы также можете написать статью с помощью provide.geeksforgeeks.org или отправить ее по электронной почте на deposit@geeksforgeeks.org. Посмотрите, как ваша статья появляется на главной странице GeeksforGeeks, и помогите другим гикам.

Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.

Хотите узнать о лучших видео и практических задачах, ознакомьтесь с базовым курсом C ++ для базового и продвинутого уровня C ++ и курсом C ++ STL для базового уровня плюс STL. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .
C++