Modificación de vectores: insert, erase y clear
Inserte, elimine y borre elementos teniendo presentes las reglas de invalidación de iteradores.
Modificación de vectores: insert, erase y clear es una lección gratuita de C++ Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de C++ Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de C++ Academy incluye 4 lecciones en total.
Insertar al final
La inserción más rápida: push_back o emplace_back; ambos añaden elementos al final en O(1) amortizado.
Insertar en una posición arbitraria
insert(pos, value) desplaza hacia la derecha todo lo que se encuentra después de pos. Es una operación O(n).
std::vector<int> v = {1, 2, 4, 5};
v.insert(v.begin() + 2, 3); // {1, 2, 3, 4, 5}Insertar un rango
Inserte de una vez todos los elementos de otro contenedor.
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}Insertar varias copias
Inserte n copias del mismo valor.
std::vector<int> v = {1, 4};
v.insert(v.begin() + 1, 2, 99); // {1, 99, 99, 4}Borrar un elemento
erase(pos) elimina el elemento situado en el iterador y desplaza hacia la izquierda todo lo que viene después. Devuelve un iterador al elemento siguiente.
std::vector<int> v = {1, 2, 3, 4};
v.erase(v.begin() + 1); // {1, 3, 4}Borrar un rango
Elimine todos los elementos del intervalo semiabierto [first, last).
v.erase(v.begin() + 1, v.begin() + 3);El patrón erase-remove
Para eliminar todos los elementos que coincidan con un predicado sin dejar huecos, combine std::remove_if y erase.
#include <algorithm>
v.erase(
std::remove_if(v.begin(), v.end(), [](int x) { return x < 0; }),
v.end()
);C++20 std::erase y std::erase_if
C++20 añadió funciones independientes que encapsulan el patrón erase-remove.
std::erase(v, 0); // remove all 0s
std::erase_if(v, [](int x) { return x < 0; });clear: eliminar todos los elementos
clear() elimina todos los elementos, pero conserva la capacidad. Resulta útil si planea volver a llenar el vector.
pop_back: eliminar el último
Eliminación del último elemento en O(1). No devuelve ningún valor; obténgalo antes si lo necesita.
int last = v.back();
v.pop_back();Reglas de invalidación de iteradores
insert y erase invalidan todos los iteradores desde la posición modificada en adelante. erase devuelve el siguiente iterador válido, por lo que puede continuar iterando.
Comprobación rápida
¿Qué hace std::remove_if por sí solo en un vector?
Resumen
insert y erase funcionan en posiciones arbitrarias en O(n). Use push_back/pop_back para obtener O(1) al final. Aplique el patrón erase-remove (o std::erase_if de C++20) para eliminar los elementos que coincidan.
Preguntas frecuentes
¿La lección «Modificación de vectores: insert, erase y clear» es gratis?
Sí — el texto completo de «Modificación de vectores: insert, erase y clear» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de C++ Academy, actualiza a CoddyKit PRO. El curso de C++ Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Modificación de vectores: insert, erase y clear»?
Inserte, elimine y borre elementos teniendo presentes las reglas de invalidación de iteradores. Practicas C++ Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar C++ Academy?
No se requiere experiencia previa. C++ Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Modificación de vectores: insert, erase y clear»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de C++ Academy?
Sí. Cada lección de C++ Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Conceptos básicos de std::vector: push_back, size y capacity
- Iteración de vectores: índices, range-for e iteradores
- Modificación de vectores: insert, erase y clear
- Vector frente a std::array y array de C