现在位置: 首页 > C++ 教程 > 正文

C++ <list> erase 函数

C++ 容器类 <list> C++ 容器类 <list>


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;
}

运行结果预期:

原始: 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;
}

运行结果预期:

原始: 1 2 3 4 5 6 7
删除后: 1 5 6 7

C++ 容器类 <list> C++ 容器类 <list>