|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
( Y4 v0 p8 Y; j& X3 V
2 Q; V8 I7 c& K+ S1 {; ~
2 m( {4 I4 r1 V* O" s R1 Q- T
$ F1 m& t) V* k% X2 }, w; }" J7 o7 A9 b
" `5 w0 |$ ^6 q: t7 g n# bC++ STL 的实现:
# x0 V7 [2 K! m& W
1 h) ^4 X" N! R
' C( [! w; ^( B: `6 T# o1.vector 底层数据结构为数组 ,支持快速随机访问$ P: r) w2 W% w% v) J0 w8 e+ E
x6 K+ H: H: f1 R- u) V/ c
# ^2 {% [. j2 [2 A+ [$ n8 i
2.list 底层数据结构为双向链表,支持快速增删3 J+ ^0 X4 E6 R6 P! }
+ X$ D0 P: f+ |7 z
- T* O1 k; V0 @3 a P
3.deque 底层数据结构为一个中央控制器和多个缓冲区,详细见STL源码剖析P146,支持首尾(中间不能)快速增删,也支持随机访问' R; L+ }- a, W+ G/ W
- V$ S( v9 l- [3 \7 N, D+ N
! i# O+ q. x% g8 T( A- Z+ A) ^4.stack 底层一般用23实现,封闭头部即可,不用vector的原因应该是容量大小有限制,扩容耗时/ B+ ]( [/ a* s4 w1 K( [9 i% H
0 w2 s! U j8 s# J0 F
6 i, A% G' U P; M% q. y" ?1 V
5.queue 底层一般用23实现,封闭头部即可,不用vector的原因应该是容量大小有限制,扩容耗时* ?1 Y% v) p6 m* G
) e7 q, I7 T) V' [ x3 O
6 S. R3 W* k) n" Z6 @' V+ T6.45是适配器,而不叫容器,因为是对容器的再封装
3 A2 B' n6 z$ o, S3 P1 w9 Q
- U- q5 d2 q8 H) M% f7 a4 m. N2 b% p. ^3 p# ?: b. t
7.priority_queue 的底层数据结构一般为vector为底层容器,堆heap为处理规则来管理底层容器实现2 q" Q N. t0 P' |
! F# x& S0 }3 W+ f. @8 [5 b( g Z3 U0 Y
8.set 底层数据结构为红黑树,有序,不重复
! O1 B, P5 g @6 U1 X: i/ O" U: @' O& m& S
4 k) c4 y; P( v! ]2 c
9.multiset 底层数据结构为红黑树,有序,可重复
3 x) v, j9 h, u3 M2 h \3 g0 {7 B; g! a
& I. D J% e. ?* n4 l6 [3 J6 O) m10.map 底层数据结构为红黑树,有序,不重复5 _/ q' _8 ~, d3 h
1 P! R- R i* B5 ]( A
; ~+ o! }% }1 h+ H4 V11.multimap 底层数据结构为红黑树,有序,可重复# ]8 U6 p9 X6 b& t
/ \7 ?# o% Y0 w9 D
! @; T' e# N1 f* i6 k$ O7 Q/ n12.hash_set 底层数据结构为hash表,无序,不重复( a: d1 E% }+ g' D1 E
: [- ^7 I5 v4 M1 _' {7 d. }
Q. h- y+ X: r7 [8 a6 Y, L13.hash_multiset 底层数据结构为hash表,无序,可重复
! X' ^! J6 U! e# c- `
4 f+ N9 \! c- V* u9 ~# l! s9 e
5 J$ p4 m$ p* c2 Z14.hash_map 底层数据结构为hash表,无序,不重复) G" ~5 O4 F+ e! \+ M( E6 M2 p
" y7 W( x- @" x- U
" a5 H8 V- Z+ M/ t5 F15.hash_multimap 底层数据结构为hash表,无序,可重复 3 Q9 S5 L: x1 |" F
' }5 s1 p5 F; y6 T |
|