当前位置: 首页 > news >正文

C++(24):容器类<list>

目录

一、核心概念

二、基本语法

1. 声明与初始化

2.添加元素

3.访问与遍历

4. 删除元素

三、特点

1. 高效插入/删除

2. 不支持随机访问

3. 特有成员函数

4. 内存与性能

四、示例代码

五、成员函数

六、使用场景

七、注意事项        


    

         Lists将元素按顺序储存在链表中.,与 向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢。

一、核心概念

  <list> 是C++标准库中的 双向链表 容器,其核心特性如下:

  1. 双向链表结构
    每个元素(节点)包含两个指针,分别指向前一个和后一个节点,支持双向遍历。

  2. 非连续内存分配
    元素存储在离散的内存块中,插入/删除时只需调整指针,无需移动其他元素。

  3. 双向迭代器
    支持 ++ 和 -- 操作,但不支持随机访问(如 +n 或 [])。


二、基本语法

1. 声明与初始化
  • 包含头文件:#include <list>
  • std::list<T> mylist;,其中 T 是存储在列表中的元素类型。
#include <list>
using namespace std;// 声明一个整数链表
list<int> list1;                // 空链表
list<int> list2 = {1, 2, 3};    // 初始化列表
list<int> list3(5, 10);         // 包含5个10的链表:{10,10,10,10,10}
list<int> lst4 = {1, 2, 3, 4};   // 使用初始化列表
2.添加元素

        mylist.push_front(value):push_front()函数将val连接到链表的头部。

        mylist.push_back(value):push_back()将val连接到链表的最后。

        mylist.begin():begin()函数返回一个迭代器,指向list的第一个元素。

        insert()插入元素val到位置pos,或者插入num个元素val到pos之前,或者插入start到end之间的元素到pos的位置。返回值是一个迭代器,指向被插入的元素。

        advance 函数的作用

  • 是 <iterator> 头文件中的通用函数(需包含 <iterator>,但在 <list> 中已隐式包含)。

  • 适用于所有支持 ++ 操作的迭代器(如 list 的双向迭代器)。

  • 参数说明

    advance(迭代器, 移动步数);
    • 若步数为正数:向前移动。

    • 若步数为负数:向后移动(需迭代器支持 --

http://www.dtcms.com/a/199448.html

相关文章:

  • 学习源码?
  • cmd里可以使用npm,vscode里使用npm 报错
  • OpenCv(7.0)——银行卡号识别
  • 中山大学具身智能体高效探索与精准问答!Beyond the Destination:面向探索感知的具身问答新基准
  • std::ranges::views::stride 和 std::ranges::stride_view
  • 2025年AI与网络安全的终极博弈:冲击、重构与生存法则
  • 【OpenCV基础2】
  • Interrupt 2025 大会回顾:关于LangChain 的 AI Agent会议内容总结
  • 如何提高嵌入式软件设计的代码质量
  • 用 CodeBuddy 实现「IdeaSpark 每日灵感卡」:一场 UI 与灵感的极简之旅
  • MathType公式如何按照(1)(2)…编号
  • PYTHON训练营DAY30
  • Windows多功能工具箱软件推荐
  • Linux配置SSH密钥认证
  • 2025年新发布的 基于鸿蒙操作系统5的 电脑可以支持Windows 应用嘛?
  • android13以太网静态ip不断断开连上问题
  • 什么业务需要用到waf
  • vue2.0 的计算属性
  • esp32课设记录(三)mqtt通信记录 附mqtt介绍
  • 软件工程-项目管理
  • 【android bluetooth 协议分析 01】【HCI 层介绍 8】【ReadLocalVersionInformation命令介绍】
  • CVE-2015-3934 Fiyo CMS SQL注入
  • 词嵌入基础
  • el-tree结合el-tree-transfer实现穿梭框里展示树形数据
  • 【android bluetooth 协议分析 01】【HCI 层介绍 7】【ReadLocalName命令介绍】
  • Feature Toggle 不再乱:如何设计一个干净、安全、可控的特性开关系统?
  • LeetCode 39. 组合总和 LeetCode 40.组合总和II LeetCode 131.分割回文串
  • 模板(template)初始
  • Spring Cloud Seata 深度解析:原理与架构设计
  • 微店平台关键字搜索商品接口技术实现