Explorando a STL – Aula 1 – Vector

Escrito por Thiago Mota e Anita Almeida

A estrutura $$vector$$ faz parte do conjunto de estruturas da Standard Template Library e representa um vetor dinâmico, ou seja, um vetor que não precisa ter um tamanho fixo pré-definido como visto anteriormente na aula de Vetores.

Declaração

A biblioteca <vector> é necessária para utilizar a estrutura $$vector$$. Além disso, também vemos que, diferentemente de um vetor, o tipo da estrutura é colocada entre <tipo>, ou seja, declaramos usando o seguinte comando: vector<tipo> nome.

Inserção de elementos

O primeiro comando do $$vector$$ e um dos mais importantes é o push_back(), que insere um elemento ao final do vetor. Por exemplo, se os elementos do vetor forem $$\{1, 3, 5, 7\}$$ e usarmos o comando push_back(2), o vetor após a mudança será $$\{1, 3, 5, 7, 2\}$$.

A complexidade do comando push_back() é $$O(1)$$.

Acesso a um elemento

Assim como um vetor normal, para acessarmos o $$i$$-ésimo elemento do $$vector$$, podemos utilizar a sintaxe $$v[i]$$. Além disso, como o vetor é dinâmico, podemos utilizar o comando $$size()$$ para acessar o número de elementos no vetor.

Nota: O comando $$size()$$ retorna um tipo diferente de $$int$$. Assim, para realizar comparações entre $$int$$ e $$v.size()$$ é recomendado utilizar $$(int)v.size()$$ para o computador transformar o $$v.size()$$ em inteiro.

Outros comandos

Abaixo, citaremos brevemente outros comandos úteis do $$vector$$:

pop_back(): Remove o último elemento do $$vector$$.

Complexidade: $$O(1)$$.

erase(): Remove o(s) elemento(s) de uma determinada posição ou intervalo do $$vector$$.

Complexidade: $$O(n)$$.

clear(): Remove todos os elementos do $$vector$$.

Complexidade: $$O(n)$$.

resize(n): Troca o tamanho do vetor para $$n$$ e pode ou não inserir um determinado número nas novas posições.

Complexidade: $$O(n)$$.

Para ordenar um vector utilizando o sort, podemos fazer o seguinte código:

Complexidade: $$O(n \log_{} n)$$.

Nota: Os outros comandos do vector podem ser encontrados nos links de referência a seguir:

Problemas para praticar:

Problema 1 – Fila

Problema 2 – Escada Rolante

Problema 3 – Zero para Cancelar

Problema 4 – Lista de Chamada