C++ <list> функция erase
eraseиспользуется в list дляудаления элементов в указанных позицияхфункции.
eraseЭто функция-член класса контейнера, используемая для удаления одного или нескольких элементов в указанной позиции в связанном списке.
В list,eraseЕго временная сложность — O(1), потому что требуется только изменить указатели.
Определения слов: eraseОзначает «erase», то есть удаление элемента в указанной позиции.
Базовый синтаксис и параметры
eraseявляется функцией-членом класса контейнера.
Формат синтаксиса
iterator erase(iterator pos); iterator erase(iterator first, iterator last);
Описание параметра
- Параметр:
pos— позиция удаляемого элемента - Параметр:
first, last— диапазон удаляемых элементов
Описание функции
- Возвращаемое значение: возвращает итератор, указывающий на следующий элемент.
- Действие: удаляет элемент в указанной позиции.
Пример
Пример 1: удаление одного элемента
Пример
#include <iostream>
#include <list>
int main() {
std::list<int> numbers = {1, 2, 3, 4, 5};
std::cout << "Исходный: ";
for(int n : numbers) std::cout << n << " ";
std::cout << std::endl;
// Удалить второй элемент
auto it = std::next(numbers.begin(), 1);
numbers.erase(it);
std::cout << "После удаления: ";
for(int n : numbers) std::cout << n << " ";
std::cout << std::endl;
return 0;
}
#include <list>
int main() {
std::list<int> numbers = {1, 2, 3, 4, 5};
std::cout << "Исходный: ";
for(int n : numbers) std::cout << n << " ";
std::cout << std::endl;
// Удалить второй элемент
auto it = std::next(numbers.begin(), 1);
numbers.erase(it);
std::cout << "После удаления: ";
for(int n : numbers) std::cout << n << " ";
std::cout << std::endl;
return 0;
}
Ожидаемый результат выполнения:
原始: 1 2 3 4 5 After deletion: 1 3 4 5
Пример 2: Удаление нескольких элементов
Пример
#include <iostream>
#include <list>
int main() {
std::list<int> numbers = {1, 2, 3, 4, 5, 6, 7};
std::cout << "Исходный: ";
for(int n : numbers) std::cout << n << " ";
std::cout << std::endl;
// Удалить элементы со 2-го по 4-й
auto first = std::next(numbers.begin(), 1);
auto last = std::next(numbers.begin(), 4);
numbers.erase(first, last);
std::cout << "После удаления: ";
for(int n : numbers) std::cout << n << " ";
std::cout << std::endl;
return 0;
}
#include <list>
int main() {
std::list<int> numbers = {1, 2, 3, 4, 5, 6, 7};
std::cout << "Исходный: ";
for(int n : numbers) std::cout << n << " ";
std::cout << std::endl;
// Удалить элементы со 2-го по 4-й
auto first = std::next(numbers.begin(), 1);
auto last = std::next(numbers.begin(), 4);
numbers.erase(first, last);
std::cout << "После удаления: ";
for(int n : numbers) std::cout << n << " ";
std::cout << std::endl;
return 0;
}
Ожидаемый результат выполнения:
原始: 1 2 3 4 5 6 7 After deletion: 1 5 6 7
Другие расширения