|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
8 N4 w3 D0 T. a6 c P; K
& \# k$ J/ ^( y, a4 K) U/ r" c6 s
) k2 T' \; t4 ~# G# w
+ Q f2 q& D% U: n, ]7 k& I2 y
" }! U& W( Q2 ~$ b: Y0 M5 R. DC++ STL 的实现:
, g* w0 A1 A+ m! W0 g0 P1 x& D! |% ^/ X
6 b) C* s( T) w5 z5 P" n7 Z! u
1.vector 底层数据结构为数组 ,支持快速随机访问) @1 ^- N& e* h* z1 u7 C
8 R: u' J) d) M; F) @) k/ M$ J7 z
- ~) u) O% u4 {0 d! }2.list 底层数据结构为双向链表,支持快速增删5 a) K" t9 H* v; F: }" U! k
% ~" S# w6 y2 E" r
! H& k$ I& f, C; I) M; j) Q: b, x
3.deque 底层数据结构为一个中央控制器和多个缓冲区,详细见STL源码剖析P146,支持首尾(中间不能)快速增删,也支持随机访问 d4 G! c: E3 A/ U" `
) O- J+ t* q" @; w5 I
4 K+ ^7 n4 w: v! l4 k7 D, S4.stack 底层一般用23实现,封闭头部即可,不用vector的原因应该是容量大小有限制,扩容耗时
) d3 k6 h0 V5 F0 f# Z; _" Y8 M0 P% Q5 H6 E/ ^
$ o- g* ?) z% o2 r) p. U5.queue 底层一般用23实现,封闭头部即可,不用vector的原因应该是容量大小有限制,扩容耗时1 W" x) x2 g% J7 Y& t! Z
) C- ~- {8 Q/ k( t& K" F* W% V q' s* `
6.45是适配器,而不叫容器,因为是对容器的再封装+ U+ U$ o. I% u" l) E- }8 T
; N4 R. j6 }% n' ]3 i- R
7 P3 C1 b, p5 V
7.priority_queue 的底层数据结构一般为vector为底层容器,堆heap为处理规则来管理底层容器实现
g% G9 ~2 p, E- s& Y: H
4 H# E: [% F" D* D: q9 Z+ ]! w3 S$ W1 T
8.set 底层数据结构为红黑树,有序,不重复
" P: f- J$ x S% V
: S+ r$ K- w& h' O2 C( N* T- e
! t+ z# H$ K4 m2 P6 `9.multiset 底层数据结构为红黑树,有序,可重复
! b6 p4 O7 b8 y& B. g4 }/ x0 h T w F. B! z! r5 O2 O- ]( S
3 T8 h H( ^1 Q- p( y
10.map 底层数据结构为红黑树,有序,不重复
\5 F- u; k. M, H+ j+ P0 A8 U4 }
$ Q( n+ z4 j1 T+ m6 ^$ B11.multimap 底层数据结构为红黑树,有序,可重复
' u2 V5 q7 N' A: D& c0 y8 _9 ^/ \1 k0 \1 @. k; X R
. A( M* z& g j+ y0 v4 `
12.hash_set 底层数据结构为hash表,无序,不重复! e4 T8 Z/ q) `3 ]0 c/ {' e. c
( L8 o) N0 i+ }
0 N* o! r: f2 u/ O+ t8 V2 H6 }+ [% s( n8 C
13.hash_multiset 底层数据结构为hash表,无序,可重复 / y- b1 g- `# g* P( U
4 ?. {; X* G0 e8 F: |7 [' L" D @
14.hash_map 底层数据结构为hash表,无序,不重复; L, u6 \8 `/ y0 O; {& \
" I, Z3 s9 j" y/ [* h7 t# z
, ~( C u3 v- e0 C# P
15.hash_multimap 底层数据结构为hash表,无序,可重复
! y1 E' o' F( f, N0 N. z6 T a, G7 v$ ]
|
|