Udostępnij za pośrednictwem


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

Zobacz też

Informacje

generate_n (STL — Przykłady)

Standardowa biblioteka szablonów