STL(2)
- 容器的分类
- array测试程序
- vector测试程序
- deque原理
- stack和queue
- multiset
- multimap
- unordered_set
容器的分类
- 序列式 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