C++中的std::list<T>详解 目录1、std::list的基本概念2、std::list的结构定义(简化)3、std::list的核心特性4、std::list的常用函数4.1构造和赋值4.2添加元素4.3删除元素4.4访问元素4.5遍历4.6迭代器与移动4.7容量相关4.8排序/去重/反转4.9splice(list 的灵魂)5、std::list的迭代器6、什么时候用 std::list?(决策表)7、std::list的使用8、总结非AI生成,觉得有用,就请您帮忙点赞转发收藏吧,您的鼓励是我创作的动力,多谢看官。由于能力水平有限,文中的错误或不严谨的地方在所难免,还请批评指正。1、std::list的基本概念std::list是双向链表(doubly linked list),底层是节点式结构,不是连续内存。2、std::list的结构定义(简化)templatetypename Tstruct Node { T value; Node* prev; Node* next;};3、std::list的核心特性特性说明底层结构双向链表随机访问❌ 不支持[]/at()插入删除✅ O(1)(已知位置)内存布局❌ 不连续,cache 不友好迭代器稳定性✅ 插入/删除不影响其他迭代器内存开销❌ 每个元素两个指针4、std::list的常用函数4.1构造和赋值std::listint l1; // 空std::listint l2 = {1,2,3}; // 初始化列表std::listint l3(10, 42); // 10 个 42std::listint l4(l2); // 拷贝std::listint l5(l2.begin(), l2.end()); // 区间构造4.2添加元素1.头部添加元素ls.push_front(1); // 头插 O(1)ls.push_back(2); // 尾插 O(1)ls.emplace_front(1, 2); // 直接在头部构造ls.emplace_back(3, 4); // 直接在尾部构造emplace_*优于push_*(少一次拷贝/移动)2.在迭代器位置插入auto it = ls.begin();ls.insert(it, 10); // 插入一个ls.insert(it, 3