STL(2)
容器的分类

对于不同容器,有不同的底层实现,这种缩进式的展示了容器的底层实现
- 序列式 sequence container

array 固定长度
vector 能在后部插入元素
deque 两边都能插入元素,但是技术上不易描述
list 双向链表
forward-list 单向链表
- 关联式 associative container

实现一个快速的查找
set/multiset map/multimap 底部使用红黑树(高度平衡,自动平衡)
set和map的差别,map每一个结点有key value,而set中key就是value
multi和non-multi的区别,multi表示key可以重复,没multi表示key无法重复
例如,存储学生信息用身份证号当主键可以使用map
- 无序容器 unordered container C++11
unordered_set unordered_map multiset multimap
底层使用hashtable,hash碰撞时使用链表的做法(公认是效率较高的解决办法
array测试程序

- .data()函数
写下array的首地址
vector测试程序

-
find()返回iterator类型,用*来取值,是循序查找,遍历数组
-
.capacity() 获得当前容量,由于vector容量的开辟时*2的类型的,所以会有一个capacity
deque原理

stack和queue
因为容器的访问特性,fifo
不提供一个iterator来遍历这个容器,避免对容器访问的破坏
multiset

红黑树的底层实现使得容器自己的查找比全局的查找要快很多
multimap
和上述的类似,区别在于取键值对
unordered_set
带unordered的底层实现是使用hashtable

浙公网安备 33010602011771号