STL: Borrar uno o más elementos
Publicado por FX Programmer en 3 Junio 2009
La plantilla list posee 5 métodos que nos permiten borrar elementos:
- pop_back borra el último elemento de la lista
- pop_front borra el primer elemento de la lista
- erase borra uno o más elementos de la lista
- remove borra un elemento de la lista
- clear borra todos los elementos de la lista
La sintaxis para los métodos pop_back, pop_front y clear es sencilla ya que ninguno de estos requiere de parámetros. Por ejemplo, dado el objeto X de la clase list los métodos mencionados se invocan así:
- X.pop_back();
- X.pop_front();
- X.clear();
El método remove nos permite borrar cualquier elemento por su valor. remove borra todos los elementos cuyo valor sea igual al argumento. La sintaxis de remove es:
- remove( valor );
El método erase nos permite borrar cualquier numero de elemento. erase borra un elemento indicado por un iterador o todos los elementos indicados por un iterador inicial y un iterador final. La sintaxis de erase es:
- erase( iterador );
- erase( iterador inicial, iterador final );
En seguida se presenta un programa con tres ejemplos, uno sobre método remove y dos sobre el método erase.
#include <cstdlib>
#include <iostream>
#include <list>
using namespace std;
// Ejemplo: metodo remove
void test01()
{
nombres.push_back(“Juan”);
nombres.push_back(“Oscar”);
nombres.push_back(“Samantha”);
nombres.push_back(“Angela”);
nombres.push_back(“Wilder”);
nombres.push_back(“Carlos”);
nombres.push_back(“Oscar”);
list<string>::iterator it = nombres.begin();
cout << “antes de remove” << endl;
while (it != nombres.end())
cout << endl;
nombres.remove(“Oscar”);
it = nombres.begin();
cout << “despues de remove” << endl;
while (it != nombres.end())
cout << endl;
}
// Ejemplo 1: metodo erase
void test02()
{
nombres.push_back(“Juan”);
nombres.push_back(“Oscar”);
nombres.push_back(“Samantha”);
nombres.push_back(“Angela”);
nombres.push_back(“Wilder”);
nombres.push_back(“Carlos”);
list<string>::iterator it = nombres.begin();
cout << “antes de erase” << endl;
while (it != nombres.end())
cout << endl;
nombres.erase(nombres.begin());
it = nombres.begin();
cout << “despues de erase” << endl;
while (it != nombres.end())
cout << endl;
}
// Ejemplo 2: metodo erase
void test03()
{
nombres.push_back(“Juan”);
nombres.push_back(“Oscar”);
nombres.push_back(“Samantha”);
nombres.push_back(“Angela”);
nombres.push_back(“Wilder”);
nombres.push_back(“Carlos”);
list<string>::iterator it = nombres.begin();
cout << “antes de erase” << endl;
while (it != nombres.end())
cout << endl;
list<string>::iterator ini = nombres.begin();
list<string>::iterator fin = nombres.end();
ini++; ini++;
fin–; fin–;
nombres.erase(ini, fin);
it = nombres.begin();
cout << “despues de erase” << endl;
while (it != nombres.end())
cout << endl;
}
// Entrada del programa
int main(int argc, char *argv[])
{
system(“cls”); test02(); system(“PAUSE”);
system(“cls”); test03(); system(“PAUSE”);
return EXIT_SUCCESS;
}






