Biblioteca de vetores C ++ - função reserve ()

Descrição

A função C ++ std::vector::reserve()as solicitações para reservar a capacidade do vetor sejam pelo menos o suficiente para conter n elementos. A realocação ocorre se houver necessidade de mais espaço.

Declaração

A seguir está a declaração para o cabeçalho da função std :: vector :: reserve () std :: vector.

C ++ 98

void reserve (size_type n);

Parâmetros

n - Capacidade mínima para vetor.

Valor de retorno

Nenhum

Complexidade de tempo

Se a realocação acontecer, então a complexidade do tempo é linear, ou seja, O (n).

Exemplo

O exemplo a seguir mostra o uso da função std :: vector :: reserve ().

No exemplo abaixo, o tamanho inicial do vetor v1 é zero. Após inserir o primeiro elemento, o vetor é expandido e sua capacidade passa a ser 1, após inserir o próximo elemento sua capacidade passa a ser 2 e assim por diante. O vetor aumenta sua capacidade em potência de dois, conforme necessário.

Para o vetor v2 , estamos reservando capacidade para conter 25 elementos, por isso, assim que o primeiro elemento é inserido, a capacidade do vetor passa 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;
}

Vamos compilar e executar o programa acima, isso produzirá o seguinte 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