|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
8 u! } q9 H$ C& N. K4 f
# t9 `7 g& x, k2 Y% M$ N4 w1 `; }9 r m) a
3 K7 x6 B( T% X( P- w. j0 d
K9 E$ K3 Q6 N2 I/ t3 P. {5 {C++ STL 的实现:, c+ x- j# \; J8 y- r
* |& |! Q s- i2 g' c6 Q9 v# d
6 C6 k) q1 p q0 |, Q6 H5 ^, I3 V
1.vector 底层数据结构为数组 ,支持快速随机访问
' S, H$ `6 J/ @; U" k6 l+ z7 s1 D8 O6 C E% V$ i: t
/ V( p" a/ u2 ~/ S2 ^# i" p) @2.list 底层数据结构为双向链表,支持快速增删
2 m# r, A( C/ p2 E* X
$ A1 J4 z5 M. _2 M! w: V
, `$ k S5 N% Q6 ?* a- v- r& R3.deque 底层数据结构为一个中央控制器和多个缓冲区,详细见STL源码剖析P146,支持首尾(中间不能)快速增删,也支持随机访问9 U' U4 x. l+ ^! W. i
5 D% H; C! X9 I% l
* ^" u( p; Z: g
4.stack 底层一般用23实现,封闭头部即可,不用vector的原因应该是容量大小有限制,扩容耗时4 S( t: n# |4 W' v6 O. J
6 ^3 F' |7 Q7 C w# ]
6 S5 ?7 ?' ]2 f$ Y: _1 ?% _; k
5.queue 底层一般用23实现,封闭头部即可,不用vector的原因应该是容量大小有限制,扩容耗时
5 u" [! J3 R+ H) y B# x) x
# U; x6 I0 a' h2 Z6 p
4 J. V9 A- I; ~, U6.45是适配器,而不叫容器,因为是对容器的再封装+ E* s a7 ?: T
, Y( V, p- z1 Q. a% A
9 V' ?8 ~8 w" ]6 {. ]7.priority_queue 的底层数据结构一般为vector为底层容器,堆heap为处理规则来管理底层容器实现% `- V d: C6 f6 ]+ |
) B8 I& T# z& x( @* U+ y
0 ?. q) L+ S4 y+ U8.set 底层数据结构为红黑树,有序,不重复, {. k* p6 I, T3 f6 h5 e. C
5 ] r: U5 r$ }# B* w2 `
+ K) }5 s. p) F$ @9.multiset 底层数据结构为红黑树,有序,可重复 7 I( o2 B* U) I$ o, V% e. O& N- Z
" O. R! t8 F* k+ x6 O( y
- k/ {- S( M) _4 p6 h10.map 底层数据结构为红黑树,有序,不重复: ^5 M5 D$ t0 G
2 s0 j# z6 y, W& I# C; X9 v
. P6 ~2 J+ i# b) w
11.multimap 底层数据结构为红黑树,有序,可重复
* ]1 g8 v4 f5 G) f+ D: C, Y) v2 _4 b2 o+ p: f
6 D# U$ I( T. Q4 z' H& T12.hash_set 底层数据结构为hash表,无序,不重复. `$ ]8 s2 @$ _; K! L/ Z
) u y4 t, B% s8 w; }
( V) k+ ^9 D9 J6 d13.hash_multiset 底层数据结构为hash表,无序,可重复
' L! w+ r: N. L m) c4 f' N& `. P3 j
' k; c- O3 Q, b g/ `1 ~
14.hash_map 底层数据结构为hash表,无序,不重复
0 a4 X* b! Y+ T# h& |6 y7 R
+ S7 w1 m( _4 q& W7 D
" z7 ]* q" J- l" \( g9 C15.hash_multimap 底层数据结构为hash表,无序,可重复
x4 Z. w7 P9 T% ?8 h/ Y5 Q! J \' D' I% d" y/ R! d9 y
|
|