|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
1 Q2 F! m) P4 i2 w
- b* m9 h+ G9 Q, d2 i& s
6 ~% H4 L8 W+ u
1 P8 u# \/ J7 K+ m: q( E& D( ]9 d3 h' _& v& v/ Y
C++ STL 的实现:
$ i' A4 r# f/ Q: f, _, P v5 I% \' P5 C( p* M
/ w: k5 _5 ?7 D" d. M2 w
1.vector 底层数据结构为数组 ,支持快速随机访问; H9 B- I7 h/ M* d
8 P3 \- _) w1 R1 K4 D. ~" o+ |8 D' ^" ^( H* _1 P+ M% c) W/ H! M
2.list 底层数据结构为双向链表,支持快速增删9 u3 g7 ~$ [3 B V: H9 p
. N5 u( E0 a+ `7 [6 @+ r4 \
* r8 @. Y1 d3 N9 o6 P3.deque 底层数据结构为一个中央控制器和多个缓冲区,详细见STL源码剖析P146,支持首尾(中间不能)快速增删,也支持随机访问' F$ [5 z0 f1 P H* B
& E" D/ Q% W- _3 t/ s2 u2 F
8 l6 }( ~! ~ p4.stack 底层一般用23实现,封闭头部即可,不用vector的原因应该是容量大小有限制,扩容耗时
5 P2 S% r# x5 S3 E# W" I. a" h+ ]
( V) E8 ]5 b; g
5.queue 底层一般用23实现,封闭头部即可,不用vector的原因应该是容量大小有限制,扩容耗时9 v; J: L8 {) r1 V4 R6 [3 n
( v0 Q) S* J. d: u$ V/ d* l ~; ~
, X. K" F" E' u! b: s6.45是适配器,而不叫容器,因为是对容器的再封装
7 U. V$ {" R0 L: A+ k L0 O, m5 i; s
( l5 s$ X) k) S: U2 w3 P7.priority_queue 的底层数据结构一般为vector为底层容器,堆heap为处理规则来管理底层容器实现
4 H' Z {% h* W( y8 R. D8 o4 k- j: n; ^
p. E% {( ]2 W5 i
8.set 底层数据结构为红黑树,有序,不重复
* p- [+ _) ~9 L" I! T7 h& }0 S! ^3 o
) r7 d' O& {& w7 c- q9.multiset 底层数据结构为红黑树,有序,可重复 * X& N' R. @, E/ c) }
8 E3 S3 x) C& t2 M; [8 j. J
5 f1 g3 A6 I5 z5 H10.map 底层数据结构为红黑树,有序,不重复
4 i/ S" i" S! k" Z( g
) X, n1 [8 l0 w/ r- T4 [9 f$ `8 Y2 Y* {
5 j$ `+ o! `1 M9 m11.multimap 底层数据结构为红黑树,有序,可重复
! w, X& Y& q% {6 E# H# [9 l7 G* n8 l+ [
! V2 T4 n3 k% ^2 u' j6 F12.hash_set 底层数据结构为hash表,无序,不重复: @( f' U7 I4 n& E
0 r4 E/ `! Z6 O) l U" c
( o8 C7 ?8 U3 ?: \- o. ]8 G13.hash_multiset 底层数据结构为hash表,无序,可重复 # z j. R9 {3 h) ~6 w
: p9 u' L/ s. P& T$ t& d" m# P8 B9 [: b
14.hash_map 底层数据结构为hash表,无序,不重复
* p. G+ Z" j9 G5 Z& f6 _ E" b) E9 ~/ W
+ c Z* v% P; X0 ?5 O8 @) b15.hash_multimap 底层数据结构为hash表,无序,可重复 " C& g: f/ ]/ L- n
5 I# N, [) Y% \2 A
|
|