0Pricing
C++ Academy · Aula

Modificar vetores: insert, erase, clear

Insira, remova e limpe elementos tendo em conta as regras de invalidação de iteradores

Modificar vetores: insert, erase, clear é uma aula grátis de C++ Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de C++ Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de C++ Academy inclui 4 aulas no total.

Inserção no final

A inserção mais rápida: push_back ou emplace_back — ambos adicionam ao final com custo amortizado O(1).

Inserção em uma posição arbitrária

insert(pos, value) desloca tudo que vem depois de pos para a direita. É uma operação O(n).

std::vector<int> v = {1, 2, 4, 5};
v.insert(v.begin() + 2, 3);   // {1, 2, 3, 4, 5}

Inserção de um intervalo

Insira de uma vez todos os elementos de outro contêiner.

std::vector<int> v = {1, 5};
std::vector<int> mid = {2, 3, 4};
v.insert(v.begin() + 1, mid.begin(), mid.end());
// {1, 2, 3, 4, 5}

Inserção de várias cópias

Insira n cópias do mesmo valor.

std::vector<int> v = {1, 4};
v.insert(v.begin() + 1, 2, 99);   // {1, 99, 99, 4}

Remoção de um elemento

erase(pos) remove o elemento na posição indicada pelo iterador e desloca tudo que vem depois para a esquerda. Retorna um iterador para o próximo elemento.

std::vector<int> v = {1, 2, 3, 4};
v.erase(v.begin() + 1);   // {1, 3, 4}

Remoção de um intervalo

Remova todos os elementos do intervalo semiaberto [first, last).

v.erase(v.begin() + 1, v.begin() + 3);

O idioma erase-remove

Para remover todos os elementos que correspondem a um predicado sem deixar lacunas, combine std::remove_if e erase.

#include <algorithm>
v.erase(
    std::remove_if(v.begin(), v.end(), [](int x) { return x < 0; }),
    v.end()
);

std::erase e std::erase_if no C++20

O C++20 adicionou funções livres que encapsulam o idioma erase-remove.

std::erase(v, 0);                    // remove all 0s
std::erase_if(v, [](int x) { return x < 0; });

clear: remover todos os elementos

clear() remove todos os elementos, mas mantém a capacidade. É útil quando você pretende preencher o vetor novamente.

pop_back: remover o último

Remoção do último elemento em O(1). Não há valor de retorno — obtenha o elemento antes, se precisar dele.

int last = v.back();
v.pop_back();

Regras de invalidação de iteradores

insert e erase invalidam todos os iteradores a partir da posição modificada. erase retorna o próximo iterador válido, para que você possa continuar percorrendo.

Verificação rápida

O que std::remove_if faz sozinho em um vetor?

Recapitulação

insert e erase funcionam em posições arbitrárias com custo O(n). Use push_back/pop_back para operações O(1) no final. Aplique o idioma erase-remove (ou std::erase_if do C++20) para remover elementos correspondentes.

Perguntas Frequentes

A aula “Modificar vetores: insert, erase, clear” é grátis?

Sim — o texto completo de “Modificar vetores: insert, erase, clear” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de C++ Academy, atualize para CoddyKit PRO. O curso de C++ Academy inclui 4 aulas no total.

O que vou aprender em “Modificar vetores: insert, erase, clear”?

Insira, remova e limpe elementos tendo em conta as regras de invalidação de iteradores Você pratica C++ Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar C++ Academy?

Nenhuma experiência prévia é necessária. C++ Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.

Quanto tempo leva a aula “Modificar vetores: insert, erase, clear”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de C++ Academy?

Sim. Cada aula de C++ Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Noções básicas de std::vector: push_back, size, capacity
  2. Percorrer vetores: índice, range-for e iteradores
  3. Modificar vetores: insert, erase, clear
  4. Vector versus std::array versus matriz em C
← Voltar para C++ Academy