什么是STL?
STL(Standard Template Library)标准模板库,它从根本上来说是一些“容器”的集合(包括list、vector、set、map、stack等)。
- 头文件:
algorithm、deque、functional、iterator、array、vector、list、map、memory、numeric、queue、set、unordered_set、stack、utility
STL--常用类型本质
list的本质其实就是一个双向链表,可以很高效的进行插入和删除元素,但是呢,它也有链表本身的限制,即不能进行随机读取。时间复杂度是O(N)。
queue的本质是队列
stack的本质是堆栈容器,FILO(先进后出)。
vector的本质是可变大小的数组的序列容器,它可以通过下标访问,也可以通过iterator来访问。它在分配空间的时候会分配额外的空间来适应可能会有的增长,当已分配的空间不足以存储所有数据的时候,重新分配的空间大小是对数增长的。在末尾插入数据的时候时间复杂度是常数时间;不在末尾插入数据的是要重新分配内存空间,然后把数据复制过去,效率非常低。
map是一个关联容器,关键字-关键字的值,可以通过关键字来进行快速的查找。它的内部是一个红黑树(这个还在看。。。),这棵树具有自动排序的功能,所以在map内部的数据都是有序的。时间复杂度是O(log2(N))。访问它的数据可以通过关键值或者iterator来访问。插入数据可以直接使用map0[关键字] = 值,或者map0.insert(pair<关键字类型, 值类型>(关键字, 值))
网友评论