CorEngine

Creando un engine para el desarrollo de software y videojuegos

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:

  1. erase( iterador );
  2. 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()
{

list <string> nombres;

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 << “\t” << *it++ << endl;

cout << endl;

nombres.remove(“Oscar”);
it = nombres.begin();
cout << “despues de remove” << endl;
while (it != nombres.end())

cout << “\t” << *it++ << endl;

cout << endl;

}

// Ejemplo 1: metodo erase
void test02()
{

list <string> nombres;

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 << “\t” << *it++ << endl;

cout << endl;

nombres.erase(nombres.begin());
it = nombres.begin();
cout << “despues de erase” << endl;
while (it != nombres.end())

cout << “\t” << *it++ << endl;

cout << endl;

}

// Ejemplo 2: metodo erase
void test03()
{

list <string> nombres;

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 << “\t” << *it++ << endl;

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 << “\t” << *it++ << endl;

cout << endl;

}

// Entrada del programa
int main(int argc, char *argv[])
{

system(“cls”); test01(); system(“PAUSE”);
system(“cls”); test02(); system(“PAUSE”);
system(“cls”); test03(); system(“PAUSE”);
return EXIT_SUCCESS;

}


Escribe un comentario

XHTML: Puedes usar estas etiquetas: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>