目录
Lists将元素按顺序储存在链表中.,与 向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢。
一、核心概念
<list>
是C++标准库中的 双向链表 容器,其核心特性如下:
-
双向链表结构
每个元素(节点)包含两个指针,分别指向前一个和后一个节点,支持双向遍历。 -
非连续内存分配
元素存储在离散的内存块中,插入/删除时只需调整指针,无需移动其他元素。 -
双向迭代器
支持++
和--
操作,但不支持随机访问(如+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(迭代器, 移动步数);
-
若步数为正数:向前移动。
-
若步数为负数:向后移动(需迭代器支持
--
-