Compartir a través de


generate

Asigna los valores generados por un objeto de función a cada elemento en un rango.

template<class ForwardIterator, class Generator>
   void generate(
      ForwardIterator _First, 
      ForwardIterator _Last, 
      Generator _Gen
   );

Parámetros

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

  • _Last
    Un iterador hacia delante que dirige la posición una más allá del último elemento en el intervalo al que los valores deben estar asignados.

  • _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 (_Last – _First) llama al generador que es necesario.

Ejemplo

// alg_generate.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 ( v1.begin ( ), v1.end ( ) , 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 ( deq1.begin ( ), deq1.end ( ) , rand );

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

Requisitos

encabezado: <algoritmo>

espacio de nombres: std

Vea también

Referencia

generate (STL Samples)

Biblioteca de plantillas estándar