generate_n

Weist die Werte, die durch ein Funktionsobjekt an eine angegebene Anzahl von Elementen in einem Bereich generiert und kehren zur Position eine bestimmte Vergangenheit der letzte Wert zurück.

template<class OutputIterator, class Diff, class Generator>
   void generate_n(
      OutputIterator _First, 
      Diff _Count, 
      Generator _Gen
   );

Parameter

  • _First
    Ein Ausgabeiterator, der die Position des ersten Elements im Bereich behandelt, dem Werte zugewiesen werden sollen.

  • _Count
    Ein Ganzzahltypen mit oder ohne Vorzeichen-Typ, der die Anzahl der einen Wert den durch die Generatorfunktion zugewiesen werden Elemente, angibt.

  • _Gen
    Ein Funktionsobjekt, das ohne Argumente aufgerufen wird, das verwendet wird, um die auf jedes Element im Bereich zugewiesen werden, Werte zu generieren.

Hinweise

Das Funktionsobjekt wird für jedes Element im Bereich aufgerufen und muss nicht, um den gleichen Wert zurückgibt, wenn sie aufgerufen wird.Es beispielsweise von einer Datei lesen oder lokalen Zustand verweisen und geändert werden.Der Ergebnistyp des Generators muss dem Werttyp der Vorwärtsiteratoren für den Bereich konvertierbar sein.

Der Bereich, der verweist, muss gültig sein; alle Zeiger müssen dereferenzierbar sein, und in der Sequenz, muss die letzte Position von der ersten durch Zunahme erreichbar sein.

Die Komplexität ist, mit genau _Count Aufrufe zum Generator linear, der erforderlich ist.

generate_n hat zwei verknüpfte Formulare:

Informationen darüber, wie diese Funktionen verhalten, finden Sie unter Überprüfte Iteratoren.

Beispiel

// alg_generate_n.cpp
// compile with: /EHsc
#include <vector>
#include <deque>
#include <algorithm>
#include <iostream>
#include <ostream>

int main() {
   using namespace std;

   // Assigning random values to vector integer elements
   vector <int> v1 ( 5 );
   vector <int>::iterator Iter1;
   deque <int> deq1 ( 5 );
   deque <int>::iterator d1_Iter;
   
   generate_n ( v1.begin ( ), 5 , rand );
   
   cout << "Vector v1 is ( " ;
   for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
      cout << *Iter1 << " ";
   cout << ")." << endl;

   // Assigning random values to deque integer elements
   generate_n ( deq1.begin ( ), 3 , rand );

   cout << "Deque deq1 is ( " ;
   for ( d1_Iter = deq1.begin( ) ; d1_Iter != deq1.end( ) ; d1_Iter++ )
      cout << *d1_Iter << " ";
   cout << ")." << endl;
}

Output

Vector v1 is ( 41 18467 6334 26500 19169 ).
Deque deq1 is ( 15724 11478 29358 0 0 ).

Anforderungen

Header: <algorithm>

Namespace: std

Siehe auch

Referenz

generate_n (STL Samples)

Standardvorlagenbibliothek