序列式容器

vector:就是一个可变的数组,底层是一个固定数量的数组,当元素的数量大于数组的容量的时候,会进行倍数扩充,将原来数组的数据拷贝到现在的数组里。

vector iterator 就是一个普通的指针,对于vector的操作其实就是对于指针的操作,对于操作符进行了重载,可以使之和普通数组一样使用。

list:链表,底层就是一个双向链表,list的iterator就是_list_node的指针,对于其操作就是在链表上进行操作,重载运算符。

deque:和vector相似,比vector头部插入快,底层是一个固定数量指针数组map(不是stl的map,只是起这个名字,类型T**),map中的每个元素指向一块固定大小的数组,map如果在添加数据的时候不足,那么进行扩充map,将原来拷贝到新的map。

deque iterator:这个维护当前map的元素,因为每个map元素对应的数组的大小都是一样的,那么在使用下标访问的时候其实使用的计算map需要跳跃到的位置,在计算在map元素的数组的位置。

stack和queue:其实这两个的都可以以list和deque作为底层,他们是一个配接器,只需要修改list和deque的接口就可以了。

heap:是一种特殊的机制,可以使用动态的数组来实现,可以上网查一下堆的实现,作为优先队列的底层。

slist:单向链表,实现和list类似。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值