Записки программиста
Авторский блог Михаила Лукина

vector::erase



iterator erase ( iterator position );
iterator erase ( iterator first, iterator last );

Удаляет элементы из вектора.

Уменьшает размер вектора. Вызывает деструктор у каждого удаляемого объекта.

У функции есть две версии:
iterator erase ( iterator position );
Удаляет один элемент, на который указывает итератор position.

iterator erase ( iterator first, iterator last );
Удаляет последовательность [first; last).
 

Замечание 1. Если в векторе хранятся указатели, то их надо уничтожить самостоятельно. В противном случае будет утечка памяти. Функция erase не вызывает оператор delete или delete []!

 

Замечание 2. Все итераторы и ссылки на элементы после позиции first или position становятся недействительными.

 

Параметры

position
Итератор на элемент вектора, который будет удален.
first
Итератор на первый элемент последовательности, которая будет удалена.
last
Итератор на следующий за последним элемент последовательности, которая будет удалена.

 

Возвращаемое значение

Итератор, указывающий на элемент, следующий за удаленным. Если был удален последний элемент, то возвращается vector::end

 

Пример.

#include <iostream>
#include <algorithm> #include <vector> using namespace std; void PrintElement(int elem) { cout << elem << " "; } int main () { vector<int> theVector; for (int i = 0; i < 20; i++) { theVector.push_back(i); } cout << "theVector elements:\n"; for_each(theVector.begin(), theVector.end(), PrintElement); cout << endl; vector<int>::iterator iter = find(theVector.begin(), theVector.end(), 13); theVector.erase(iter); theVector.erase(theVector.begin(), theVector.begin() + 5); cout << "After erases:\n"; for_each(theVector.begin(), theVector.end(), PrintElement); cout << endl; return 0; }

Результат:
theVector elements: 
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 
 After erases: 
5 6 7 8 9 10 11 12 14 15 16 17 18 19

 

Временная сложность

O(n + m), где n - число удаляемы элементов, а m - число элементов вектора, которые находятся после последнего удаленного.

 

Версия для печати

© 2010-2014. Записки программиста. Все права защищены.
Яндекс.Метрика
ВебСтолица.РУ: создай свой бесплатный сайт!  | Пожаловаться  
Движок: Amiro CMS