Libreria vettoriale C ++ - funzione reserve ()

Descrizione

La funzione C ++ std::vector::reserve()le richieste di riserva della capacità del vettore siano almeno sufficienti per contenere n elementi. La riallocazione avviene se è necessario più spazio.

Dichiarazione

Di seguito è riportata la dichiarazione per la funzione std :: vector :: reserve () nel modulo std :: vector header.

C ++ 98

void reserve (size_type n);

Parametri

n - Capacità minima per il vettore.

Valore di ritorno

Nessuna

Complessità temporale

Se si verifica una riallocazione, la complessità temporale è lineare, ovvero O (n).

Esempio

L'esempio seguente mostra l'utilizzo della funzione std :: vector :: reserve ().

Nell'esempio seguente la dimensione iniziale del vettore v1 è zero. Dopo aver inserito il primo elemento, il vettore viene espanso e la sua capacità diventa 1, dopo aver inserito l'elemento successivo la sua capacità diventa 2 e così via. Il vettore aumenta la sua capacità in potenza di due secondo necessità.

Per il vettore v2 ci riserviamo la capacità di contenere 25 elementi, ecco perché non appena viene inserito il primo elemento la capacità del vettore diventa 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;
}

Compiliamo ed eseguiamo il programma sopra, questo produrrà il seguente risultato:

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