From a1ff4e74c61095ec3626f30fa8bd1110871cb021 Mon Sep 17 00:00:00 2001 From: huihut Date: Sat, 27 Oct 2018 17:33:11 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=BA=20STL=20=E5=AE=B9=E5=99=A8=E8=A1=A8?= =?UTF-8?q?=E6=A0=BC=E5=A2=9E=E5=8A=A0=E6=97=B6=E9=97=B4=E5=A4=8D=E6=9D=82?= =?UTF-8?q?=E5=BA=A6=EF=BC=9B=E5=A2=9E=E5=8A=A0=20STL=20=E7=AE=97=E6=B3=95?= =?UTF-8?q?=E8=A1=A8=E6=A0=BC=EF=BC=9B=E4=BF=AE=E6=94=B9=20CSDN=20?= =?UTF-8?q?=E9=93=BE=E6=8E=A5=20https?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 43 +++++++++++++++++++++++++------------------ 1 file changed, 25 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 644e262..dcb4552 100644 --- a/README.md +++ b/README.md @@ -1221,7 +1221,7 @@ class doSomething(Flyable *obj) // 做些事情 ![Google C++ Style Guide](images/GoogleCppStyleGuide.png) -> 图片来源于:[CSDN . 一张图总结Google C++编程规范(Google C++ Style Guide)](http://blog.csdn.net/voidccc/article/details/37599203) +> 图片来源于:[CSDN . 一张图总结Google C++编程规范(Google C++ Style Guide)](https://blog.csdn.net/voidccc/article/details/37599203) @@ -1233,23 +1233,30 @@ class doSomething(Flyable *obj) // 做些事情 ### 容器 -容器 | 底层数据结构 | 有无序 | 可不可重复 | 其他 ----|---|---|---|--- -[array](https://github.com/huihut/interview/tree/master/STL#array)|数组|无序|可重复|支持快速随机访问 -[vector](https://github.com/huihut/interview/tree/master/STL#vector)|数组|无序|可重复|支持快速随机访问 -[list](https://github.com/huihut/interview/tree/master/STL#list)|双向链表|无序|可重复|支持快速增删 -[deque](https://github.com/huihut/interview/tree/master/STL#deque)|双端队列(一个中央控制器+多个缓冲区)|无序|可重复|支持首尾快速增删,支持随机访问 -[stack](https://github.com/huihut/interview/tree/master/STL#stack)|deque 或 list 封闭头端开口|无序|可重复|不用 vector 的原因应该是容量大小有限制,扩容耗时 -[queue](https://github.com/huihut/interview/tree/master/STL#queue)|deque 或 list 封闭底端出口和前端入口|无序|可重复|不用 vector 的原因应该是容量大小有限制,扩容耗时 -[priority_queue](https://github.com/huihut/interview/tree/master/STL#priority_queue)|vector|无序|可重复|vector容器+heap处理规则 -[set](https://github.com/huihut/interview/tree/master/STL#set)|红黑树|有序|不可重复| -[multiset](https://github.com/huihut/interview/tree/master/STL#multiset)|红黑树|有序|可重复| -[map](https://github.com/huihut/interview/tree/master/STL#map)|红黑树|有序|不可重复| -[multimap](https://github.com/huihut/interview/tree/master/STL#multimap)|红黑树|有序|可重复| -hash_set|hash表|无序|不可重复| -hash_multiset|hash表|无序|可重复| -hash_map|hash表|无序|不可重复| -hash_multimap|hash表|无序|可重复| +容器 | 底层数据结构 | 时间复杂度 | 有无序 | 可不可重复 | 其他 +---|---|---|---|---|--- +[array](https://github.com/huihut/interview/tree/master/STL#array)|数组|随机读改 O(1)|无序|可重复|支持快速随机访问 +[vector](https://github.com/huihut/interview/tree/master/STL#vector)|数组|随机读改、尾部插入、尾部删除 O(1)
头部插入、头部删除 O(n)|无序|可重复|支持快速随机访问 +[list](https://github.com/huihut/interview/tree/master/STL#list)|双向链表|插入、删除 O(1)
随机读改 O(n)|无序|可重复|支持快速增删 +[deque](https://github.com/huihut/interview/tree/master/STL#deque)|双端队列(一个中央控制器+多个缓冲区)|头尾插入、头尾删除 O(1)|无序|可重复|支持首尾快速增删,支持随机访问 +[stack](https://github.com/huihut/interview/tree/master/STL#stack)|deque 或 list 封闭头端开口|顶部插入、顶部删除 O(1)|无序|可重复|不用 vector 的原因应该是容量大小有限制,扩容耗时 +[queue](https://github.com/huihut/interview/tree/master/STL#queue)|deque 或 list 封闭底端出口和前端入口|尾部插入、头部删除 O(1)|无序|可重复|不用 vector 的原因应该是容量大小有限制,扩容耗时 +[priority_queue](https://github.com/huihut/interview/tree/master/STL#priority_queue)|vector + max-heap|插入、删除 O(log2n)|有序|可重复|vector容器+heap处理规则 +[set](https://github.com/huihut/interview/tree/master/STL#set)|红黑树|插入、删除、查找 O(log2n)|有序|不可重复| +[multiset](https://github.com/huihut/interview/tree/master/STL#multiset)|红黑树|插入、删除、查找 O(log2n)|有序|可重复| +[map](https://github.com/huihut/interview/tree/master/STL#map)|红黑树|插入、删除、查找 O(log2n)|有序|不可重复| +[multimap](https://github.com/huihut/interview/tree/master/STL#multimap)|红黑树|插入、删除、查找 O(log2n)|有序|可重复| +hash_set|hash表|插入、删除、查找 O(1) 最差 O(n)|无序|不可重复| +hash_multiset|hash表|插入、删除、查找 O(1) 最差 O(n)|无序|可重复| +hash_map|hash表|插入、删除、查找 O(1) 最差 O(n)|无序|不可重复| +hash_multimap|hash表|插入、删除、查找 O(1) 最差 O(n)|无序|可重复| + +### 算法 + +算法 | 底层算法 | 时间复杂度 | 可不可重复 +---|---|---|--- +[find](http://www.cplusplus.com/reference/algorithm/find/)|顺序查找|O(n)|可重复 +[sort](https://github.com/gcc-mirror/gcc/blob/master/libstdc++-v3/include/bits/stl_algo.h#L4808)|[内省排序](https://en.wikipedia.org/wiki/Introsort)|O(n*log2n)|可重复 ## 数据结构