Biblioteca de vectores de C ++ - función reserve ()

Descripción

La función C ++ std::vector::reserve()las solicitudes para reservar la capacidad del vector deben ser al menos suficientes para contener n elementos. La reasignación ocurre si se necesita más espacio.

Declaración

A continuación se muestra la declaración de la función std :: vector :: reserve () del encabezado std :: vector.

C ++ 98

void reserve (size_type n);

Parámetros

n - Capacidad mínima para vector.

Valor devuelto

Ninguna

Complejidad del tiempo

Si ocurre una reasignación, la complejidad del tiempo es lineal, es decir, O (n).

Ejemplo

El siguiente ejemplo muestra el uso de la función std :: vector :: reserve ().

En el ejemplo siguiente, el tamaño inicial del vector v1 es cero. Después de insertar el primer elemento, el vector se expande y su capacidad se convierte en 1, después de insertar el siguiente elemento, su capacidad se convierte en 2 y así sucesivamente. Vector aumenta su capacidad en potencia de dos según sea necesario.

Para el vector v2 estamos reservando capacidad para contener 25 elementos, es por eso que tan pronto como se inserta el primer elemento, la capacidad del vector pasa a ser 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;
}

Compilemos y ejecutemos el programa anterior, esto producirá el siguiente resultado:

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