STL概述 ----op学校

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

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

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

小技巧
当需要的数据量比较大的时候 直接分配一个够大的空间
STL概述 ----op学校_第2张图片
deque(双端队列)
数组map 里面装的都是别人数组的指针
优点 前后的插入速度快
缺点 随机访问 通过 map -》地址-》里面的值 访问慢
STL概述 ----op学校_第3张图片
list(链表)
单项链表
head next
双向链表(环形列表,....设计方式很多)

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


set(集合)
multiset(多重集合) 序号可以重复
通过二叉树实现 红黑树(会把顺序打乱)(搜索 二分法不管搜索多少数据速度都差不多),其实它里面是有序的。c++11增加俩个容器 她 是用 哈希表实现的
set 是通过序列号随机访问
STL概述 ----op学校_第4张图片
map(映射)
multimap(多重映射 --key可以重复
map 是通过 key and value
  STL概述 ----op学校_第5张图片

算法(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次 在


你可能感兴趣的:(c++,STL,c++,STL,算法,函数)