Перевод этой страницы?:

erase

Синтаксис:

    #include <deque>
    iterator erase( iterator loc );
    iterator erase( iterator start, iterator end );

Функция erase() либо удаляет элемент под итератором loc, либо удаляет элементы между start и end (включая start, но не включая end). Возвращаемое значение - итератор на элемент после последнего удаленного элемента.

Первая версия erase (удаляющая один элемент) выполняется за константное время для списков и за линейное время для векторов, двусторонних очередей и строк. Многоэлементная версия erase всегда требует линейное время.

Например:

   // Создаем двустороннюю очередь, заполняем ее первыми десятью буквами алфавита
   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 );
     // Выводим на экран
     for( tempIterator = alphaDeque.begin(); tempIterator != alphaDeque.end (); tempIterator++ ) {
       cout << *tempIterator;
     }
     cout << endl;
   }

Код выведет:

   BCDEFGHIJ
   CDEFGHIJ
   DEFGHIJ
   EFGHIJ
   FGHIJ
   GHIJ
   HIJ
   IJ
   J

В следующем примере erase() вызывается с двумя итераторами в качестве параметров, чтобы удалить несколько элементов из двусторонней очереди:

   // Создаем двустороннюю очередь, заполняем ее первыми десятью буквами алфавита
   deque<char> alphaDeque;
   for( int i=0; i < 10; i++ ) {
     alphaDeque.push_back( i + 65 );
   }
   // Выводим полную двустороннюю очередь
   for( int i = 0; i < alphaDeque.size(); i++ ) {
     cout << alphaDeque[i];
   }
   cout << endl;
 
    // Используем erase, чтобы удалить все элементы двусторонней очереди, кроме первых двух
    //  и последних трех
   alphaDeque.erase( alphaDeque.begin()+2, alphaDeque.end()-3 );
   // Выводим измененную двустороннюю очередь
   for( int i = 0; i < alphaDeque.size(); i++ ) {
     cout << alphaDeque[i];
   }
   cout << endl;

После запуска код выведет:

   ABCDEFGHIJ
   ABHIJ

Смотри также: clear, insert, pop_back, pop_front