Метод erase класса list
Метод erase класса list удаляет
один элемент или диапазон элементов из списка.
В первом варианте мы передаем итератор на
удаляемый элемент, а во втором - итераторы
начала и конца диапазона для удаления.
Метод возвращает итератор на элемент, следующий
за последним удаленным элементом.
Синтаксис
iterator erase(iterator pos)
iterator erase(iterator first, iterator last)
Пример
Давайте удалим один элемент из списка. Для этого передадим итератор на второй элемент:
#include <iostream>
#include <list>
using namespace std;
int main()
{
list<int> lst = {1, 2, 3, 4, 5};
auto it = lst.begin();
++it;
lst.erase(it);
for (int elem : lst)
{
cout << elem << " ";
}
return 0;
}
Результат выполнения кода:
1 3 4 5
Пример
Давайте удалим диапазон элементов из списка. Для этого передадим итераторы на второй и четвертый элементы:
#include <iostream>
#include <list>
using namespace std;
int main()
{
list<int> lst = {1, 2, 3, 4, 5};
auto first = lst.begin();
auto last = lst.begin();
++first;
++last;
++last;
++last;
lst.erase(first, last);
for (int elem : lst)
{
cout << elem << " ";
}
return 0;
}
Результат выполнения кода:
1 4 5
Пример
Давайте удалим все элементы списка, начиная со второго:
#include <iostream>
#include <list>
using namespace std;
int main()
{
list<int> lst = {1, 2, 3, 4, 5};
auto it = lst.begin();
++it;
lst.erase(it, lst.end());
for (int elem : lst)
{
cout << elem << " ";
}
return 0;
}
Результат выполнения кода:
1