STL概述 ----op学校

本文深入介绍了C++标准模板库(STL)的核心组件及其优势。涵盖了容器如向量、双端队列、链表等,算法如排序、查找,以及迭代器、适配器等关键概念。同时探讨了不同容器的特点及应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为什么 c++比 c 开发块 因为有 stl
STL
c++程序员必备技能
STL有多个版本 stl是一套标准
vs 编译器
gcc编译器
泛型程序设计
程序尽可能通用
将算法从数据结构中抽象出来,成为通用的
通用接口比如排序 数组能用 链表能用 ....因为统一接口

STL做了什么
包含常用的数据结构
数据结构:链表 数组 二叉树 ...
包含常用的基本算法
基本算法:插入 删除 排序 查询.....
提供了一套可扩展框架
stl提供了可以扩展泛型编程的框架,因为都是接口所以可以继承
STL六大组件
容器 算法 迭代器 函数对象 分配器 适配器

容器(Container)
vector(向量
连续的空间叫做数组 有序的
随机访问 往后插入 删除 非常块
随机插入 删除 非常慢
如何做到可变长
申请一个空间 当用完之后在申请一个当前空间*2的大小
把之前空间里面的数据复制过去然删除原来空间

小技巧
当需要的数据量比较大的时候 直接分配一个够大的空间

deque(双端队列)
数组map 里面装的都是别人数组的指针
优点 前后的插入速度快
缺点 随机访问 通过 map -》地址-》里面的值 访问慢

list(链表)
单项链表
head next
双向链表(环形列表,....设计方式很多)

优点 数据插入 删除 块
缺点 访问慢(on)


set(集合)
multiset(多重集合) 序号可以重复
通过二叉树实现 红黑树(会把顺序打乱)(搜索 二分法不管搜索多少数据速度都差不多),其实它里面是有序的。c++11增加俩个容器 她是用 哈希表实现的
set 是通过序列号随机访问

map(映射)
multimap(多重映射 --key可以重复
map 是通过 key and value
 

算法(Algorithm)
各种基础算法 sort,search
迭代器(Iterator)
作用:链接 容器+算法
smart point 小指针
在一个容器的元素上进行遍历,也可以是容器的一部分,所以迭代器实现了++和*进行提取值类似于指针,使用++可以遍历下一个元素,如何比那里取决于容器内部的数据组织形式。
适配器(Adapters)
改变了Container或Iterator或Function Object接口组件
容器适配器
栈 队列 优先队列
迭代器适配器
反向迭代器
插入迭代器
IO迭代器

函数适配器
函数对象适配器
成员函数适配器
普通函数适配器
适配器做的有可能屏蔽一些接口
函数对象(Function Object)
分配器(Allorator)
都是实现可扩展的接口

序列式容器(有序的)
vecor deque list
频繁的插入(删除),不用在序列内部长距离调转,应该用list
在vecor头部和中间插入(删除)效率低下,在尾部插入删除效率高
deque在头部和尾部插入与删除效率高,时间访问速度比vector低
关联式容器(无序的)
set multiset
map multimap
时间复杂度
我要几步操作才能能
o1 最快直接读取一步完成
o2 两步到位
on 是你里面有多少个元素进行多少步 这是最慢的
onn 冒泡就是 一个元素要n次 在


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值