面试准备c++(二)

STL容器和底部原理

vector

二倍增长的动态数组,线性连续空间,有容量限制。每次扩大到二倍时要重置所有迭代器,开销很大

deque(双端队列)

双向开口的存储空间分段连续的数据结构,每段数据空间内部是连续的,而每段数据空间之间则不一定连续

正因为段之间不连续,所以他整体也是不连续的,不用担心容量问题

list(环状双向链表)

随机访问很慢

stack基于list or duque

queue基于list or deque

set(集合)  multiset(多重集合)     #include<set>

红黑树实现,set中元素都是唯一的,而且默认情况下会对元素自动进行升序排列

内部以键值对方式存储,键值与实值相同,set的键值不允许更改,也不允许存放两个实值相同的元素

multiset允许重复的键值,也采用了红黑树

map(映射)multimap(多重映射)   #include<map>

key值唯一,即插入时不能键值重复,红黑树的变体,数据按照排序规则插入,不能指定位置插入

可以修改实值但不能修改key

multimap允许重复的键值

同理可得

hash_set         hash表,无序,不重复

hash_multiset   hash表,无序,可重复

hash_map       hash表,无序,不重复

hash_multimap  hash表,无序,可重复 

 

红黑树

根节点是黑色

红色节点的子节点一定是黑色(也意味着任一条路经,之后黑黑和红黑交替两种可能,没有红红)

从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值