list::erase() es una función integrada en C++ STL que se utiliza para eliminar elementos de un contenedor de lista. Esta función se puede usar para eliminar un solo elemento o un rango de elementos del contenedor de lista especificado. Sintaxis:
iterator list_name.erase(iterator position) or, iterator list_name.erase(iterator first, iterator last)
Parámetros: esta función puede aceptar diferentes parámetros en función de si se usa para borrar un solo elemento o un rango de elementos del contenedor de la lista.
- posición : este parámetro se utiliza cuando la función se utiliza para eliminar un solo elemento. Este parámetro hace referencia a un iterador que apunta al elemento que debe borrarse del contenedor de la lista.
- primero , último : estos dos parámetros se usan cuando la lista se usa para borrar elementos de un rango. El parámetro primero se refiere al iterador que apunta al primer elemento del rango y el último parámetro se refiere al iterador que apunta al último elemento del rango que se necesita borrar. Esto borra todos los elementos en el rango incluyendo el elemento señalado por el iterador primero pero excluyendo el elemento señalado por el último iterador .
Valor de retorno: esta función devuelve un iterador que apunta al elemento en el contenedor de lista que siguió al último elemento borrado del contenedor de lista. Los siguientes programas ilustran la función list::erase(). Programa 1 : Borrado de un solo elemento.
CPP
// CPP program to illustrate the // list::erase() function #include <bits/stdc++.h> using namespace std; int main() { // Creating a list list<int> demoList; // Add elements to the List demoList.push_back(10); demoList.push_back(20); demoList.push_back(30); demoList.push_back(40); demoList.push_back(50); // Printing elements of list before deleting // first element cout << "List before deleting first element: "; for (auto itr = demoList.begin(); itr != demoList.end(); itr++) { cout << *itr << " "; } // Creating iterator to point to first // element in the list list<int>::iterator itr = demoList.begin(); // deleting the first element demoList.erase(itr); // Printing elements of list after deleting // first element cout << "\nList after deleting first element:"; for (auto itr = demoList.begin(); itr != demoList.end(); itr++) { cout << *itr << " "; } return 0; }
List before deleting first element: 10 20 30 40 50 List after deleting first element:20 30 40 50
Complejidad temporal: O(n)
Complejidad del espacio : O(1)
Programa 2 : Borrado de un rango de elementos.
CPP
// CPP program to illustrate the // list::erase() function #include <bits/stdc++.h> using namespace std; int main() { // Creating a list list<int> demoList; // Add elements to the List demoList.push_back(10); demoList.push_back(20); demoList.push_back(30); demoList.push_back(40); demoList.push_back(50); // Printing elements of list before deleting // any element cout << "List before deleting any element: "; for (auto itr = demoList.begin(); itr != demoList.end(); itr++) { cout << *itr << " "; } // Creating iterators of the list list<int>::iterator itr1, itr2; itr1 = demoList.begin(); itr2 = demoList.begin(); // Incrementing itr2 by 3 positions advance(itr2, 3); // deleting range of elements from index [0, 3) demoList.erase(itr1, itr2); // Printing elements of list after deleting // range of elements from [0, 3) cout << "\nList after deleting first three elements: "; for (auto itr = demoList.begin(); itr != demoList.end(); itr++) { cout << *itr << " "; } return 0; }
List before deleting any element: 10 20 30 40 50 List after deleting first three elements: 40 50
Nota : esta función funciona en complejidad de tiempo lineal, es decir, el número de elementos borrados del contenedor de la lista.
Complejidad temporal: O(n)
Complejidad del espacio : O(1)