STL全析


标准: C++的一个标准库,不管是在Windows还是Linux,只要安装相关的C++编译器,库中的所有容器都会相应的安装到本地的操作系统,可以直接包含相应头文件进行使用
模板: STL提供的类库都是使用模板实现的。好处是想用这些算法处理什么样的类型就用什么样的类型实例化这些模板就可以了。比较通用的代码

一、标准容器

1.顺序容器

vector:向量容器

在这里插入图片描述
在这里插入图片描述

C++进阶之路—STL—vector

deque:双端队列的容器

在这里插入图片描述
在这里插入图片描述

C++进阶之路—STL—deque

list:链表容器

在这里插入图片描述
在这里插入图片描述

C++进阶之路—STL—list

顺序容器的区别

在这里插入图片描述

2.容器适配器

怎么理解这个适配器?

  • 1.适配器底层没有自己的数据结构,它是另外一个容器的封装,它的方法全部由底层依赖的容器进行实现的
  • 2.没有实现自己的迭代器

设计模式中有一个适配器模式,但是这里的适配是一种很牵强的适配器模式,如果非要说设计模式更像是代理模式,stack代理了底层容器deque的一些方法而已

stack:先进后出

在这里插入图片描述

queue:先进先出

priority_queue:优先级高的先出

在这里插入图片描述

3.关联容器

无序关联容器:链式哈希表增删查O(1)

在这里插入图片描述

unordered_set
unordered_multiset
unordered_map

在这里插入图片描述
在这里插入图片描述

unordered multimap

有序关联容器:红黑树增删查o(log2n)2是底数(树的层数,树的高度)

set

set由于底层实现是红黑树,所有会进行排序,当存储自定义类型是set无法判断比较大小,故需要用户提供 ’ < ’ 运算符的重载
在这里插入图片描述
在这里插入图片描述

multiset
map

由于以下自定义类型存储在map中比较大小的key是int类型,所有不需要用户提供 ’ < ’ 运算符的重载,但是由于map使用【】运算符时,如果没有该key,则会插入make_pair(key,Student()),所有此时需要默认的构造函数
在这里插入图片描述

multimap

二、近容器

数组

string

bitset (位容器)

三、迭代器

C++进阶之路《迭代器》

深入理解STL vector 迭代器

正向迭代器: iterator和const_iterator

在这里插入图片描述

在这里插入图片描述

反向迭代器:reverse_iterator和const_reverse_iterator

四、函数对象

C++函数对象

什么叫函数对象

在这里插入图片描述

使用函数对象的好处

函数对象就是C语言里面的函数指针,函数对象所能完成的功能,函数指针都可以实现。但是C++为什么还需要实现函数对象呢?

函数指针

在这里插入图片描述
在这里插入图片描述

greater

在这里插入图片描述

less8

五、泛型算法

在这里插入图片描述
在这里插入图片描述

sort

在这里插入图片描述

find

在这里插入图片描述

find_if

在这里插入图片描述

binary _search

在这里插入图片描述

for_each

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值