Partager via


générer

Affecte les valeurs générées par un objet de la fonction à chaque élément dans une plage.

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

Paramètres

  • _First
    Un itérateur par progression adressant la position du premier élément dans l'intervalle auquel les valeurs doivent être affectées.

  • _Last
    Un itérateur par progression adressant la position suivant le dernier élément dans l'intervalle auquel les valeurs doivent être affectées.

  • _Gen
    Objet de la fonction qui est appelée sans arguments qui utilisé pour générer les valeurs à affecter à chacun des éléments de la plage.

Notes

L'objet de la fonction est appelé pour chaque élément de la plage et n'a pas besoin de retourner la valeur chaque fois qu'elle est appelée. Il peut, par exemple, lire un fichier ou faire référence à un état local et le modifier . Le type de résultat du générateur doit être convertible au type de valeur des itérateurs par progression de la plage.

La plage référencée doit être valide ; tous les pointeurs doivent être deréférençables et, dans la séquence, la dernière position doit être accessible à partir de la première par incrémentation.

La complexité est linéaires, avec exactement_Last (–)_First appels au générateur requis.

Exemple

// 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;
}
  

Configuration requise

En-tête : <algorithme>

Espace de noms : std

Voir aussi

Référence

generate (Exemples STL)

Bibliothèque STL (Standard Template Library)