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