C++STL内部实现原理

STL容器详解

STL包含:容器、算法、迭代器、仿函数和适配器

本文只讲容器,实现原理也是我们常见的数据结构。

1、序列式容器

vector:也叫向量,尾部可变长数组。内部通过数组实现。空间不够时会重新分配内存,然后将原来的元素拷贝到新分配的数组中。

queue:数组、单向队列。先入先出。能将任意类型的序列容器转换为队列,由deque支持。

deque:数组、双向队列。分配中央控制器map(不是map容器),map记录着一系列固定长度的数组地址,真正的数据放在数组。首尾部可变长数组。空间不够时会分配新数组然后将原数组元素拷贝到新数组。效率低于vector,尽量使用vector。

stack:使用deque作为支持,能将任意类型的序列容器转换为栈。

list:双向链表。

slist:单向链表。

priotity_queue:有权值的queue,实现原理是堆,使用vector作为底层存储,实现原理也是数组。

 

2、关联式容器

set与map的区别:set是关键字即值,map是存储<key-value>

set、map有序无重复,multiset、multimap有序有重复。

undered_map 和 undered_set无序无重复

undered_multimap 和 undered_multiset无序有重复

set、multi_set、map、multi_map:基于红黑树,一种加了额外平衡条件的二叉搜索树。

hash table:散列表。

hash_map、hash_set、hash_multimap、hash_multiset:基于hash table。

undered_map、undered_multimap、undered_set、undered_multiset:基于hash table。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值