Bibliothèque de vecteurs C ++ - fonction reserve ()

La description

La fonction C ++ std::vector::reserve()les demandes de réservation de capacité vectorielle soient au moins suffisantes pour contenir n éléments. La réaffectation se produit s'il y a besoin de plus d'espace.

Déclaration

Voici la déclaration de la fonction std :: vector :: reserve () sous forme d'en-tête std :: vector.

C ++ 98

void reserve (size_type n);

Paramètres

n - Capacité minimale pour le vecteur.

Valeur de retour

Aucun

Complexité temporelle

Si une réalloaction se produit, la complexité temporelle est linéaire, c'est-à-dire O (n).

Exemple

L'exemple suivant montre l'utilisation de la fonction std :: vector :: reserve ().

Dans l'exemple ci-dessous, la taille initiale du vecteur v1 est zéro. Après avoir inséré le premier élément, le vecteur est développé et sa capacité devient 1, après l'insertion de l'élément suivant, sa capacité devient 2 et ainsi de suite. Vector augmente sa capacité en puissance de deux selon les besoins.

Pour le vecteur v2, nous réservons la capacité de contenir 25 éléments, c'est pourquoi dès que le premier élément est inséré, la capacité du vecteur devient 25.

#include <iostream>
#include <vector>

using namespace std;

int main(void) {
   vector<int> v1;
   vector<int> v2;
   ssize_t size;

   size = v1.capacity();

   for (int i = 0; i < 25; ++i) {
      v1.push_back(i);
      if (size != v1.capacity()) {
         size = v1.capacity();
         cout << "Expanding vector v1 to hold " << size
            << " elements" << endl;
      }
   }

   cout << endl << endl;

  /* Reserve space for 25 elements */
   v2.reserve(25);

   for (int i = 0; i < 25; ++i) {
      v2.push_back(i);
      if (size != v2.capacity()) {
         size = v2.capacity();
         cout << "Expanding vector v2 to hold " << size
            << " elements" << endl;
      }
   }
   return 0;
}

Compilons et exécutons le programme ci-dessus, cela produira le résultat suivant -

Expanding vector v1 to hold 1 elements
Expanding vector v1 to hold 2 elements
Expanding vector v1 to hold 4 elements
Expanding vector v1 to hold 8 elements
Expanding vector v1 to hold 16 elements
Expanding vector v1 to hold 32 elements
Expanding vector v2 to hold 25 elements