✅作者简介:热爱后端语言的大学生,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
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?