@AC君 求加精
也希望得到大家的支持
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
第一部分:为什么要学习C++容器
* 容器是c++中管理数据的高效工具
* 容器是就像c++中存放数据的“盒子”
* c++标准库(STL)就提供了多种容器
本篇文章将会讲解STL中最常用的7中容器
* vector 动态数组
* list 双向链表
* map 有序键值对
* set 有序集合
* queue 队列
* stack 栈
* deque 双端队列
第二部分:容器基础——先搞懂这两个概念
> 什么是STL?
* STL(Standard Template Library)-- 标准模版库 是c++自带的工具集。包含容器、算法、迭代器
* 容器、算法、迭代器,三者缺一不可
> 什么是迭代器
* 迭代器(Iterator)是访问容器的关键部分
* 由于不同容器底层结构不同,所以就需要一种统一的方式遍历容器,这就是迭代器
第三部分:比赛、写题常用的7个容器详细介绍
如果你不用万能头,一定要在每个代码前面的头文件都加上#INCLUDE<容器名>
如:include<vector>
第3.1部分:VECTOR
> vector 是什么和它的底层原理
* vector是动态数组(动态分配的数组)
* 底层原理:预先分配一块内存,当存满时自动扩容
> vector 的优缺点
* 优点:随机访问快
* 缺点:中间插入元素慢
> vector 的核心用法
> vector 的用途
* 节省内存但仍需完成像数组一样的操作(例如题目描述:n <= 1e6,m <= 1e6,n * m <= 1e6)
* 频繁随机访问
第3.2部分:LIST
> list 是什么和它的底层原理
* list 是双向链表
* 底层原理:每个节点包含数据和前后指针
* 节点在内存中不连续,也就是说不能随机访问
> list 的优缺点
* 优点:任意位置插入、删除快
* 缺点:随机访问慢
> list 的核心用法
> list 的用途
* 频繁在任意位置插入、删除元素
* 不需要随机访问但需要双向遍历
第3.3部分:QUEUE
> queue 是什么和它的底层原理
* queue 是先进先出队列
* 底层原理:基于其它容器实现
> queue 的优缺点
* 优点:首尾操作快
* 缺点:随机访问慢、内存开销略大
> queue 的核心用法
> queue 的用途
* 排队问题
* 广度优先搜索
第3.4部分:STACK
> stack 是什么和它的底层原理
* stack 是后进先出栈
* 底层原理:基于其它容器实现
> stack 的优缺点
* 优点:首操作快、DFS清楚
* 缺点:仅支持栈顶操作,无法随机访问或遍历元素;有可能栈溢出
> stack 的核心用法
> stack 的用途
* 括号匹配
* 表达式求值
* 撤销操作
* 深度优先搜索
* 初赛有可能考
第3.5部分:MAP
> map 是什么和它的底层原理
* map 是有序键值对
* 底层原理:基于红黑树实现
> map 的优缺点
* 优点:可以通过key快速查找value,且默认按key排序
* 缺点:插入、删除效率略低于哈希表
> map 的核心用法
> map 的用途
* 需要通过唯一键查找值的场景
第3.6部分:SET
> set 是什么和它的底层原理
* set 是有序集合
* 底层原理:基于红黑树实现
> set 的优缺点
* 优点:自动排序、查找快、去重方便
* 缺点:不支持随机访问
> set 的核心用法
> set 的用途
* 需要自动去重+排序时
第3.7部分:DEQUE
> deque 是什么和它的底层原理
* deque 是双端队列
* 底层原理:分段连续存储
> deque 的优缺点
* 优点:首尾操作或随机访问快
* 缺点:中间操作慢
> deque 的核心用法
> deque 的用途
* 部分需滑动窗口题目
* 需频繁进行首尾操作
第四部分:结尾
> 学习STL中的内容不能光靠“学”
> 还要会“练”,建议找题库的题目专项练一练
> 学习STL也不可以光靠这个文章(因为文章只讲了常用的7个容器)
> 所以建议大家上网搜索其他容器,继续学习
本篇文章到这里就结束了\HUGE 本篇文章到这里就结束了本篇文章到这里就结束了
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
版本2.4.8\HUGE 版本2.4.8版本2.4.8
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
点个赞或者顶一下吧!谢谢\HUGE \BLUE{点个赞或者顶一下吧!谢谢}点个赞或者顶一下吧!谢谢
有建议可以直接评论,我会更新\HUGE \RED{有建议可以直接评论,我会更新}有建议可以直接评论,我会更新
这篇有些部分查了一些资料\PURPLE{这篇有些部分查了一些资料}这篇有些部分查了一些资料
希望能给个精华帖\orange{希望能给个精华帖}希望能给个精华帖
之前发过的讨论合集