FX-std::list

ops/2025/3/18 3:13:13/

std::list 是 C++ 标准库中的一个双向链表容器,定义在 <list> 头文件中。它支持在任意位置高效地插入和删除元素,但不支持随机访问。以下是 std::list 的基本用法和一些常见操作:

1. 包含头文件

#include <list>

2. 定义和初始化

std::list<int> myList; // 定义一个空的 list
std::list<int> myList2 = {1, 2, 3, 4, 5}; // 使用初始化列表初始化

3. 插入元素

myList.push_back(10); // 在末尾插入元素
myList.push_front(5); // 在开头插入元素auto it = myList.begin();
std::advance(it, 2); // 移动迭代器到第3个位置
myList.insert(it, 15); // 在指定位置插入元素

4. 删除元素

myList.pop_back(); // 删除末尾元素
myList.pop_front(); // 删除开头元素auto it = myList.begin();
std::advance(it, 2); // 移动迭代器到第3个位置
myList.erase(it); // 删除指定位置的元素myList.remove(10); // 删除所有值为10的元素

5. 访问元素

int firstElement = myList.front(); // 访问第一个元素
int lastElement = myList.back(); // 访问最后一个元素// 遍历 list
for (auto it = myList.begin(); it != myList.end(); ++it) {std::cout << *it << " ";
}

6. 大小和容量

bool isEmpty = myList.empty(); // 检查是否为空
size_t size = myList.size(); // 获取元素个数

7. 排序和反转

myList.sort(); // 对 list 进行排序
myList.reverse(); // 反转 list
#include <iostream>
#include <list>int main() {std::list<int> myList = {5, 3, 1, 4, 2};// 默认升序排序myList.sort();std::cout << "升序排序: ";for (int val : myList) {std::cout << val << " ";}std::cout << std::endl;// 自定义降序排序myList.sort([](int a, int b) {return a > b;});std::cout << "降序排序: ";for (int val : myList) {std::cout << val << " ";}std::cout << std::endl;return 0;
}

8. 合并和拼接

std::list<int> anotherList = {20, 30, 40};
myList.merge(anotherList); // 合并两个 list,合并后 anotherList 为空myList.splice(myList.begin(), anotherList); // 将 anotherList 的元素拼接到 myList 的开头

9. 其他操作

myList.unique(); // 删除连续重复的元素
myList.resize(10); // 调整 list 的大小

10. 示例代码

#include <iostream>
#include <list>int main() {std::list<int> myList = {1, 2, 3, 4, 5};myList.push_back(6);myList.push_front(0);for (auto it = myList.begin(); it != myList.end(); ++it) {std::cout << *it << " ";}std::cout << std::endl;myList.remove(3);myList.sort();myList.reverse();for (auto it = myList.begin(); it != myList.end(); ++it) {std::cout << *it << " ";}std::cout << std::endl;return 0;
}

总结

std::list 是一个灵活的双向链表容器,适合频繁插入和删除操作的场景。由于它不支持随机访问,因此在需要随机访问时,std::vector 或 std::deque 可能是更好的选择。


http://www.ppmy.cn/ops/166666.html

相关文章

技术栈分享之----Swagger

一&#xff1a;swagger介绍 相信无论是前端还是后端开发&#xff0c;都或多或少地被接口文档折磨过。前端经常抱怨后端给的接口文档与实际情况不一致。后端又觉得编写及维护接口文档会耗费不少精力&#xff0c;经常来不及更新。其实无论是前端调用后端&#xff0c;还是后端调用…

算法精讲 | 树(二):BFS层序遍历の魔法——像水波纹一样扫描整棵树

&#x1f3af; 算法精讲 | 树&#xff08;二&#xff09;&#xff1a;BFS层序遍历の魔法——像水波纹一样扫描整棵树 &#x1f4c5; 2025/03/11 || 推荐阅读时间 12分钟 &#x1f31f; 开篇故事 小明用DFS解二叉树的右视图总超时&#xff0c;直到他发现BFS层序遍历就像超市结账…

AI驱动的视频字幕提取与翻译工具

青梧字幕是一款基于Whisper技术的AI字幕提取工具&#xff0c;专为视频制作者、翻译人员和自媒体创作者设计。它通过先进的语音识别算法&#xff0c;能够自动从视频文件中提取字幕内容&#xff0c;并支持多种语言和字幕格式&#xff0c;极大地简化了字幕制作流程。 目前暂支持 …

goweb中文件上传和文件下载

文件上传 文件上传:客户端把上传文件转换为二进制流后发送给服务器,服务器对二进制流进行解析HTML表单(form)enctype(Encode Type)属性控制表单在提交数据到服务器时数据的编码类型 enctype“application/x-www-form-urlencoded” 默认值,表单数据会被编码为名称/值形式。oenc…

单机DeepSeek做PPT,YYDS!

今天同事问我 AI 能不能做 PPT&#xff0c;有个述职报告要做&#xff0c;问我能不能帮忙&#xff0c;这时我脑海中的第一画面就是 DeepSeek Kimi DeepSeek 擅长逻辑构建与内容生成&#xff0c;其深度思考能力当前测试下来&#xff0c;不愧为国内No.1&#xff0c;而且还会把中间…

本地部署Deep Seek-R1,搭建个人知识库——笔记

目录 一、本地部署 DeepSeek - R1 1&#xff1a;安装Ollama 2&#xff1a;部署DeepSeek - R1模型 3&#xff1a;安装Cherry Studio 二、构建私有知识库 一、本地部署 DeepSeek - R1 1&#xff1a;安装Ollama 1.打开Ollama下载安装 未科学上网&#xff0c;I 先打开迅雷再下…

计算机网络笔记再战——理解几个经典的协议HTTP章3

理解几个经典协议——HTTP章3 返回结果的HTTP状态码 ​ 我们知道&#xff0c;ICMP可以传递IP通信时候的状态如何。HTTP虽然没有辅助的解析&#xff0c;但是它可以使用状态码来表达我们的HTTP请求的结果&#xff0c;标记服务器端的处理是否正常、通知出现的错误等工作。这就是…

微信小程序从右向左无限滚动组件封装(类似公告)

组件代码 wxml代码 <view class"container"><view class"text-wrapper"><!-- 这两个都不能删除,用来放无限滚动的,第一个滚完第二个接上,第二个滚完第一个又接上了 --><text class"scroll-text text1" style"left: …