Sintassi:
#include <deque> iterator erase( iterator loc ); iterator erase( iterator start, iterator end );
La funzione erase() cancella l'elemento posizionato alla locazione loc, oppure cancella gli elementi compresi tra gli iteratori start e end (includendo start, ma escludendo end). Il valore di ritorno è l'elemento dopo l'ultimo elemento cancellato.
erase() gira a tempo lineare per i vettori (per altri contenitori si veda la relativa sezione del wiki)
For esempio:
// Creiamo una deque e carichiamoci i primi 10 caratteri dell'alfabeto deque<char> alphaDeque; for( int i=0; i < 10; i++ ) { alphaDeque.push_back( i + 65 ); } int size = alphaDeque.size(); deque<char>::iterator startIterator; deque<char>::iterator tempIterator; for( int i=0; i < size; i++ ) { startIterator = alphaDeque.begin(); alphaDeque.erase( startIterator ); // Display the deque for( tempIterator = alphaDeque.begin(); tempIterator != alphaDeque.end (); tempIterator++ ) { cout << *tempIterator; } cout << endl; }
Il codice produrrebbe il seguente output:
BCDEFGHIJ CDEFGHIJ DEFGHIJ EFGHIJ FGHIJ GHIJ HIJ IJ J
Nel prossimo esempio erase() viene chiamati con due iteratori per cancellare un intervallo di elementi dalla deque:
// creiamo la deque e con i 10 caratteri dell'alfabeto deque<char> alphaDeque; for( int i=0; i < 10; i++ ) { alphaDeque.push_back( i + 65 ); } // mostrate la deque completa for( int i = 0; i < alphaDeque.size(); i++ ) { cout << alphaDeque[i]; } cout << endl; // usiamo erase per rimuovere dalla deque tutti i caratteri tranne i primi // due e gli ultimi 3 alphaDeque.erase( alphaDeque.begin()+2, alphaDeque.end()-3 ); // ecco la deque modificata for( int i = 0; i < alphaDeque.size(); i++ ) { cout << alphaDeque[i]; } cout << endl;
Il codice produrrebbe il seguente output:
ABCDEFGHIJ ABHIJ