generate_n

Asigna los valores generados por un objeto de función a un número especificado de elementos en un intervalo y vuelve a la posición una más allá del valor asignado pasado.

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

Parámetros

  • _First
    Un iterador de salida que dirige la posición del primer elemento del intervalo al que los valores deben estar asignados.

  • _Count
    Un con signo o un entero sin signo tipo especificando el número de elementos para asignar un valor por la función de generador.

  • _Gen
    Un objeto de función que se denomina sin argumentos que se utiliza para representar los valores que se deben asignar a cada uno de los elementos del intervalo.

Comentarios

El objeto de la función se invoca para cada elemento del intervalo y no debe devolver el mismo valor cada vez que se llama.Puede, por ejemplo, leer de un archivo o hacer referencia y modificar un estado local.El tipo de resultado de generador debe poder convertirse al tipo de valor de iteradores hacia delante del intervalo.

El intervalo hace referencia debe ser válido; todos los punteros deben ser dereferenceable y, dentro de la secuencia, la posición última debe ser accesible de primera por el aumento.

La complejidad es lineal, con exactamente las llamadas de _Count el generador que es necesario.

generate_n tiene dos formularios relacionados:

Para obtener información sobre cómo estas funciones se comportan, vea Iteradores comprobados.

Ejemplo

// 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 ).

Requisitos

encabezado: <algoritmo>

espacio de nombres: std

Vea también

Referencia

generate_n (STL Samples)

Biblioteca de plantillas estándar