导读:本期聚焦于小伙伴创作的《c++中如何使用list链表?c++ list容器插入与删除元素方法汇总》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《c++中如何使用list链表?c++ list容器插入与删除元素方法汇总》有用,将其分享出去将是对创作者最好的鼓励。

c++标准库中的list容器是基于双向链表实现的序列式容器,它的优势在于任意位置插入和删除元素的时间复杂度都是O(1),不需要像vector那样移动大量元素,适合频繁进行增删操作的场景。

c++中如何使用list链表?c++ list容器插入与删除元素方法汇总

list容器的基础使用准备

使用list容器前需要包含对应的头文件,并且声明对应的命名空间,基础的使用准备代码如下:

#include <iostream>
#include <list>
using namespace std;

int main() {
    // 声明一个存储int类型的list容器
    list<int> my_list;
    return 0;
}

list容器插入元素的方法

1. 尾部插入元素

使用push_back方法可以在list容器的尾部添加新元素,代码如下:

#include <iostream>
#include <list>
using namespace std;

int main() {
    list<int> my_list;
    // 尾部插入3个元素
    my_list.push_back(10);
    my_list.push_back(20);
    my_list.push_back(30);
    // 遍历输出元素
    for (int num : my_list) {
        cout << num << " ";
    }
    // 输出结果为 10 20 30
    return 0;
}

2. 头部插入元素

使用push_front方法可以在list容器的头部添加新元素,代码如下:

#include <iostream>
#include <list>
using namespace std;

int main() {
    list<int> my_list;
    my_list.push_back(10);
    my_list.push_back(20);
    // 头部插入元素5
    my_list.push_front(5);
    for (int num : my_list) {
        cout << num << " ";
    }
    // 输出结果为 5 10 20
    return 0;
}

3. 指定位置插入元素

使用insert方法可以在迭代器指向的位置插入元素,该方法返回指向新插入元素的迭代器,代码如下:

#include <iostream>
#include <list>
using namespace std;

int main() {
    list<int> my_list;
    my_list.push_back(10);
    my_list.push_back(30);
    // 获取指向第一个元素的迭代器
    auto it = my_list.begin();
    // 在第一个元素位置插入20
    my_list.insert(it, 20);
    for (int num : my_list) {
        cout << num << " ";
    }
    // 输出结果为 20 10 30
    return 0;
}

4. 批量插入元素

insert方法还支持批量插入多个相同元素,或者插入另一个容器的元素区间,代码如下:

#include <iostream>
#include <list>
using namespace std;

int main() {
    list<int> my_list = {1, 2};
    // 批量插入3个5
    my_list.insert(my_list.end(), 3, 5);
    list<int> other_list = {6, 7};
    // 插入other_list的所有元素
    my_list.insert(my_list.end(), other_list.begin(), other_list.end());
    for (int num : my_list) {
        cout << num << " ";
    }
    // 输出结果为 1 2 5 5 5 6 7
    return 0;
}

list容器删除元素的方法

1. 尾部删除元素

使用pop_back方法可以删除list容器尾部的元素,代码如下:

#include <iostream>
#include <list>
using namespace std;

int main() {
    list<int> my_list = {10, 20, 30};
    // 删除尾部元素
    my_list.pop_back();
    for (int num : my_list) {
        cout << num << " ";
    }
    // 输出结果为 10 20
    return 0;
}

2. 头部删除元素

使用pop_front方法可以删除list容器头部的元素,代码如下:

#include <iostream>
#include <list>
using namespace std;

int main() {
    list<int> my_list = {10, 20, 30};
    // 删除头部元素
    my_list.pop_front();
    for (int num : my_list) {
        cout << num << " ";
    }
    // 输出结果为 20 30
    return 0;
}

3. 删除指定位置的元素

使用erase方法可以删除迭代器指向的单个元素,或者删除一个区间内的所有元素,删除后返回指向被删除元素后一个位置的迭代器,代码如下:

#include <iostream>
#include <list>
using namespace std;

int main() {
    list<int> my_list = {10, 20, 30, 40};
    auto it = my_list.begin();
    // 移动到第二个元素位置
    ++it;
    // 删除第二个元素20
    my_list.erase(it);
    // 删除前两个元素
    auto start = my_list.begin();
    auto end = my_list.begin();
    advance(end, 2);
    my_list.erase(start, end);
    for (int num : my_list) {
        cout << num << " ";
    }
    // 输出结果为 40
    return 0;
}

4. 删除所有匹配的元素

使用remove方法可以删除容器中所有的指定值元素,代码如下:

#include <iostream>
#include <list>
using namespace std;

int main() {
    list<int> my_list = {10, 20, 10, 30, 10};
    // 删除所有值为10的元素
    my_list.remove(10);
    for (int num : my_list) {
        cout << num << " ";
    }
    // 输出结果为 20 30
    return 0;
}

5. 清空所有元素

使用clear方法可以删除list容器中的所有元素,代码如下:

#include <iostream>
#include <list>
using namespace std;

int main() {
    list<int> my_list = {10, 20, 30};
    // 清空所有元素
    my_list.clear();
    cout << "容器元素个数:" << my_list.size() << endl;
    // 输出结果为 容器元素个数:0
    return 0;
}

操作注意事项

list容器的迭代器在插入元素时不会失效,但是删除元素时,被删除元素对应的迭代器会失效,后续不能再使用该迭代器。如果需要遍历删除元素,建议使用erase方法的返回值更新迭代器,避免迭代器失效导致的程序错误。

c++list容器链表插入链表删除容器操作修改时间:2026-07-11 20:51:30

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。