Traductions de cette page?:

Constructeurs des Vecteur

Syntaxe :

    #include <vector>
    using namespace std;
    vector();
    vector( const vector& c );
    vector( size_type num, const T& val = T() );
    template< typename input_iterator >
    vector( input_iterator debut, input_iterator fin);
    ~vector();

Le constructeur par défaut ne prend pas d'arguments et crée une nouvelle instance d'un vecteur vide.

Le second constructeur est le constructeur par copie. Il est utilisé pour créer une copie d'un vecteur donné c.

Le troisième constructeur crée un vecteur contenant num éléments. Si val est spécifié, chacun de ces éléments aura cette valeur. Si val n'est pas fourni, alors le constructeur par défaut du type contenu dans le vecteur sera utilisé.

Par exemple, le code ci-dessous crée un vecteur contenant 5 fois la valeur 42.

   vector<int> v1( 5, 42 );

Le dernier constructeur permet de construire un vecteur contenant les valeurs de la séquence [debut, fin). Par exemple :

   // create a vector of random integers
   cout << "original vector: ";
   vector<int> v;
   for( int i = 0; i < 10; ++i ) {
     int num = (int) rand() % 10;
     cout << num << " ";
     v.push_back( num );
   }
   cout << endl;
 
   // find the first element of v that is even
   vector<int>::iterator iter1 = v.begin();
   while( iter1 != v.end() && *iter1 % 2 != 0 ) {
     ++iter1;
   }
 
   // find the last element of v that is even
   vector<int>::iterator iter2 = v.end();
   do {
     --iter2;
   } while( iter2 != v.begin() && *iter2 % 2 != 0 );
 
   // only proceed if we find both numbers
   if( iter1 != v.end() && iter2 != v.begin() ) {
     cout << "first even number: " << *iter1 << ", last even number: " << *iter2 << endl;
 
     cout << "new vector: ";
     vector<int> v2( iter1, iter2 );
     for( int i = 0; i < v2.size(); ++i ) {
       cout << v2[i] << " ";
     }
     cout << endl;
   }

Cet exemple fournit le résultat suivant :

   original vector: 1 9 7 9 2 7 2 1 9 8
   first even number: 2, last even number: 8
   new vector: 2 7 2 1 9

Tous ces constructeurs ont une complexité algorithmique linéaire, sauf le premier, qui est de complexité constante.

Le destructeur par défaut de chaque élément est appelé lorsque le vecteur est détruit.