generate_n
Przypisuje wartości generowanych przez obiekt funkcji do określonej liczby elementów w zakresie i zwraca do jednej pozycji minął ostatnich przypisaną wartość.
template<class OutputIterator, class Diff, class Generator> void generate_n( OutputIterator First, Diff Count, Generator Gen);
Parametry
First
Pozycja pierwszego elementu z zakresu, do którego mają zostać przypisane wartości opracowywania iterację danych wyjściowych.Count
Liczba całkowita podpisem lub bez typu z określająca liczbę elementów można przypisać do niej wartości przy użyciu funkcji generator.Gen
Funkcja obiekt jest wywoływana bez argumentów służący do generowania wartości, które mają być przypisane do poszczególnych elementów w zakresie.
Uwagi
Obiekt funkcja jest wywoływana dla każdego elementu w zakresie i nie jest konieczne do zwrócenia tę samą wartość za każdym razem, gdy jest ona wywoływana.Może, na przykład do odczytu z pliku ani odwoływać się do i modyfikować stanu lokalnych.Typ wyniku generator musi być możliwy do przekonwertowania na wartość typu do przodu Iteratory dla zakresu.
Odwołuje się do zakresu musi być prawidłowym; wszystkie wskaźniki musi być dereferenceable i, w ramach sekwencji, musi być dostępny z pierwszym ostatnie położenie przez incrementation.
Złożoność ma charakter liniowy, bez dokładnie Count wywołania generator jest wymagany.
Przykład
// cl.exe /EHsc /nologo /W4 /MTd
#include <vector>
#include <deque>
#include <iostream>
#include <string>
#include <algorithm>
#include <random>
using namespace std;
template <typename C> void print(const string& s, const C& c) {
cout << s;
for (const auto& e : c) {
cout << e << " ";
}
cout << endl;
}
int main()
{
const int elemcount = 5;
vector<int> v(elemcount);
deque<int> dq(elemcount);
// Set up random number distribution
random_device rd;
mt19937 engine(rd());
uniform_int_distribution<int> dist(-9, 9);
// Call generate_n, using a lambda for the third parameter
generate_n(v.begin(), elemcount, [&](){ return dist(engine); });
print("vector v is: ", v);
generate_n(dq.begin(), elemcount, [&](){ return dist(engine); });
print("deque dq is: ", dq);
}
Dane wyjściowe
vector v is: 1 -9 -3 2 -9
deque dq is: -9 7 -2 4 8
Wymagania
Nagłówek: < algorytm >
Przestrzeń nazw: std