C++ <list> erase 函数
erase 是 list 中用于删除指定位置元素的函数。
erase 是容器类的成员函数,用于删除链表中指定位置的一个或多个元素。
在 list 中,erase 的时间复杂度是 O(1),因为只需要调整指针。
单词释义: 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 删除后: 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 删除后: 1 5 6 7

C++ 容器类 <list>