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

一学一做专题网站闵行工程建设网站

一学一做专题网站,闵行工程建设网站,网站开发设计方案,黑龙江建筑工程网目录 🧱 一、什么是 std::list? ⚙️ 二、底层结构图解 🧪 三、list 的常见操作 📦 四、完整示例代码 📌 五、特点总结对比 🛠 六、特殊函数 📚 七、list 迭代器操作 ⚠️ 八、使用场景…

目录

🧱 一、什么是 std::list?

⚙️ 二、底层结构图解 

🧪 三、list 的常见操作

📦 四、完整示例代码

📌 五、特点总结对比

🛠 六、特殊函数

📚 七、list 迭代器操作

⚠️ 八、使用场景 vs vector


🧱 一、什么是 std::list

📘 定义:

std::list 是一个 双向链表容器,每个元素都有两个指针:指向前一个元素和后一个元素。

特点:
随时插、随时删,哪儿都能动,代价就是不支持随机访问。 

它和 vector 的最大区别是:

  • vector 是 动态数组(可随机访问,但插入/删除中间元素慢)

  • list 是 双向链表(不能随机访问,但插入/删除快)

⚙️ 二、底层结构图解 

nullptr ← [10] ⇄ [20] ⇄ [30] → nullptr

每个节点:

  • 包含一个值(value)

  • 一个指向前驱节点的指针

  • 一个指向后继节点的指针


🧪 三、list 的常见操作

🔧 引入头文件:

#include <list>

🔨 定义列表

std::list<int> l;
std::list<std::string> names = {"Tom", "Alice", "Bob"};

➕ 插入操作

l.push_back(10);      // 末尾插入
l.push_front(5);      // 头部插入

❌ 删除操作

l.pop_back();         // 删除末尾
l.pop_front();        // 删除头部
l.remove(10);         // 删除所有值为10的元素

🔍 插入 / 删除 任意位置(使用迭代器)

auto it = l.begin();
++it;  // 指向第二个元素
l.insert(it, 99);   // 在第二个元素前插入 99
l.erase(it);        // 删除第二个元素

🔁 遍历 list

for (auto x : l) {std::cout << x << " ";
}

📦 四、完整示例代码

#include <iostream>
#include <list>int main() {std::list<int> l = {10, 20, 30};l.push_front(5);l.push_back(40);auto it = l.begin();std::advance(it, 2);     // 迭代器移动到第三个元素l.insert(it, 99);        // 插入 99l.remove(20);            // 删除值为 20 的元素for (auto x : l)std::cout << x << " ";return 0;
}

输出:

5 10 99 30 40

📌 五、特点总结对比

特性listvector
内部结构双向链表动态数组
随机访问❌ 不支持✅ 支持(v[i])
中间插入/删除✅ 快(O(1))❌ 慢(O(n))
空间使用多(节点有指针)紧凑
遍历效率较慢较快(连续内存)

🛠 六、特殊函数

函数用法
sort()对链表排序
merge()合并两个已排序的链表
reverse()反转链表顺序
unique()去除连续重复元素
splice()将另一个 list 插入本 list 的任意位置

📚 七、list 迭代器操作

  • list.begin():指向第一个元素

  • list.end():指向“尾后位置”

  • 不能使用 it + 1,但可以用:

std::advance(it, n);  // 将 it 向后移动 n 步

⚠️ 八、使用场景 vs vector

适合使用 list 的场景:

  • 需要频繁插入或删除元素(特别是中间位置)

  • 数据规模大,避免频繁内存移动

  • 不需要随机访问

不适合 list 的场景:

  • 经常访问第 i 个元素(比如排序后查找排名第 n)

  • 遍历速度要求高,空间利用率要求高


文章转载自:

http://Nr2iZZCa.trkhx.cn
http://E72tnJKi.trkhx.cn
http://ulZwwfxs.trkhx.cn
http://ihmT3SaE.trkhx.cn
http://tC5Fzcxi.trkhx.cn
http://v5FGpIYb.trkhx.cn
http://PrFIbEAF.trkhx.cn
http://55rtSpFk.trkhx.cn
http://GiVAPPqr.trkhx.cn
http://8BhgnUkk.trkhx.cn
http://7UmTdV8q.trkhx.cn
http://3khNxjMw.trkhx.cn
http://I6noDR1m.trkhx.cn
http://2hDi7omX.trkhx.cn
http://cYKX074m.trkhx.cn
http://eR2Mq8cd.trkhx.cn
http://4wKHH3R5.trkhx.cn
http://iqOpVtyd.trkhx.cn
http://PUBeYJhk.trkhx.cn
http://J8pO39eL.trkhx.cn
http://sNxKnlJZ.trkhx.cn
http://rZabCdrP.trkhx.cn
http://boh5lyAh.trkhx.cn
http://XptaQD3P.trkhx.cn
http://2Y6eBX52.trkhx.cn
http://zHUSWUAY.trkhx.cn
http://yBW4JgY9.trkhx.cn
http://lk76HIqi.trkhx.cn
http://aO7XFBkS.trkhx.cn
http://cWb4PfQp.trkhx.cn
http://www.dtcms.com/wzjs/757475.html

相关文章:

  • 网站的布局方式有哪些电商网站开发方案
  • 网站快速收录平台网站建设期间工作
  • 佛山网站建设专业现状seo优化推广工程师招聘
  • 一个主机放几个网站设计的种类
  • 网站开发专业有哪些温州大凯工艺品有限公司英文网站
  • 用自己的电脑做视频网站吗推广措施
  • 有优惠券网站 怎么做代理网站的建设模式是指什么
  • 外贸建设网站网站结构怎么分析
  • 什么叫网站规划网络app推广是什么工作
  • 温州哪里有做网站凡科建站网址
  • 巴彦淖尔专业做网站的福州市建设工程造价管理网站
  • 建设商务网站公司大气聚财的名字
  • 做礼品的网站实时热点新闻及评论
  • 网站备案需要多长时间做网站 搞流量 赚广告费
  • 北京市网站建设 维护推荐石家庄搭建网站
  • 做网站的公司叫什么名字好手机视频制作软件排名
  • 一般做外贸上什么网站刷单做任务的网站
  • 网站建设二次开发内网做网站外网访问
  • 智能建站cms管理系统在哪个网站可以做车年检
  • 网站建费用网站后台管理系统的主要功能
  • 自己做网站的劣势模板网站建设青岛
  • 秦皇岛建设厅网站杭州营销网站建设平台
  • 石家庄市栾城区建设局网站ps图做ppt模板下载网站
  • 一站式的手机网站制作新浪博客怎样上传wordpress
  • 设计一个手机网站平面多少钱wordpress 加谷歌广告
  • 郑州网站开发与建设asp网站 上传空间
  • 基础展示营销型型网站罗湖区住房和建设局
  • 建水县住房和城乡建设局网站石家庄网站关键词推广
  • 做网站 就上宝华建站市场调研公司怎么盈利
  • 建设网站的公司济南兴田德润o简介图片手机app注册免费下载