✅作者简介:热爱后端语言的大学生,CSDN内容合伙人 ✨精品专栏:C++面向对象 🔥系列专栏:C++泛型编程
文章目录
- 1、list 容器本质与特点
- 2、list 基本操作与常用接口
- 2.1、list 构造函数
- 2.2、list 赋值和交换
- 2.3、list 大小操作
- 2.4、 list 插入和删除
- 2.5、list 数据存取
- 2.6、list 反转和排序
- 3、排序案例
- 3.1、生肖类
- 3.2、排序规则
- 3.3、具体实现与效果
🔥前言
今天把 list容器的基本操作、常用接口做一个系统的整理,结合具体案例熟悉自定义内部排序方法的使用。list与vector 是STL中最常用的两个容器,如果对vector 容器不熟悉的朋友可以在系列专栏里翻阅复习或者学习。
本质:
list 容器可以看做一个双向循环链表,用于存储的每个结点包含数据域和指针域
示意图: 名词解释:
begin和end都是迭代器,可以看成指针来操作- begin 对应的是容器首个元素,而end 对应容器最后一个元素的下一个位置
prev和next代表前驱指针和后继指针,并不是 list容器的接口- 指针域用来存储下一个结点的地址
front和back分别是第一个和最后一个结点的数据域push_back、push_front、pop_back、pop_front代表尾插、头插、尾删、头删
通过前驱后继指针可以将每个结点连接起来,头结点的前驱与尾结点后继指针都指向null 由于链表的存储方式并不是连续的内存空间,因此链表list中的迭代器只支持前移和后移,属于双向迭代器
list 特点:
- 优点:可以对任意位置快速插入删除,动态分配存储,不会造成内存浪费和溢出
- 缺点:遍历速度比数组慢,占用空间比数组大
list 有一个重要的性质,插入和删除操作都不会造成原有 list迭代器的失效
包含 list容器的构造、赋值交换、插入删除、数据存取、空间大小、反转、排序。
- 用于创建list容器
函数原型:
list lst;- 采用模板类实现,对象的默认构造形式
list(beg,end);- 构造函数将[beg, end)区间中的元素拷贝给本身。
list(n,elem);- 构造函数将n个elem拷贝给本身。
list(const list &lst);- 拷贝构造函数
示例:
#include
#include
using namespace std;
void printList(const list& L) {
for (list::const_iterator it = L.begin(); it != L.end(); it++) {
cout
关注
打赏
