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
- Noções básicas de std::vector: push_back, size, capacity
- Percorrer vetores: índice, range-for e iteradores
- Modificar vetores: insert, erase, clear
- Vector versus std::array versus matriz em C