|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
0 ]; H0 z" H6 @0 l# w- u2 t
: w- R7 A& o( ?# s& i$ a- ~
# N4 u2 Y9 J( p( l$ m
8 ~; P$ Y3 a* S+ J5 }3 `# f% {* O( V' O" |& j
C++ STL 的实现:
( \* S9 E3 Z/ g& y* f: N( C, t
$ ]6 [/ i( C" y/ V8 S. l- N+ X2 e3 d, U+ P. q; G; J
1.vector 底层数据结构为数组 ,支持快速随机访问
9 ?# Z' S6 \7 U. A7 ?! x! z
9 y% ^, b' ?* z: G* s
* M% N2 U* d& R: e: z& @# T2.list 底层数据结构为双向链表,支持快速增删- z( K2 Y' c5 ]8 z2 C% F5 E4 m7 w
$ @0 q1 p; R2 S: l# X$ V8 j+ v* `( R8 a! s' w" M& q
3.deque 底层数据结构为一个中央控制器和多个缓冲区,详细见STL源码剖析P146,支持首尾(中间不能)快速增删,也支持随机访问
5 J# G, Q+ q+ i/ F! [0 D; ?6 ?
( F* y% ]% l7 s% ? ]+ q1 t" e9 `( g h1 C; V8 J6 ~$ R3 U$ ^5 s
4.stack 底层一般用23实现,封闭头部即可,不用vector的原因应该是容量大小有限制,扩容耗时0 T5 Z- F4 S4 d* f) V' I, J5 d
0 E$ f( _" S7 s5 U: @2 G
% P6 X) }% S+ ^# B9 q" f5.queue 底层一般用23实现,封闭头部即可,不用vector的原因应该是容量大小有限制,扩容耗时
5 \8 {) @: Z9 h% c5 N3 H6 ]
( I; c: L+ j! u _, P( Z' M, E8 T: e, d$ D6 R3 R
6.45是适配器,而不叫容器,因为是对容器的再封装7 K1 C7 {& K0 I0 _" l) d
4 u: G: u8 g; y! a, c/ Q' A
' O O1 U2 U8 U' t U! _) y7.priority_queue 的底层数据结构一般为vector为底层容器,堆heap为处理规则来管理底层容器实现
3 ~( o0 d+ ^1 e# n# S! J) X3 O$ k$ x; w6 ]* m
4 r2 z$ |4 W3 x9 R7 Y0 R
8.set 底层数据结构为红黑树,有序,不重复
( @; i n* b# U- K7 h7 R" n# T; p: E* Q a2 B) \3 H0 C5 E1 N
7 b8 o9 X7 t, \6 _0 Q; p6 `* z) O
9.multiset 底层数据结构为红黑树,有序,可重复
2 A' _3 b' p# v! d0 w9 y9 g0 S5 n# E' q0 v4 o) i. I% H
" F$ `5 H% r/ `' I7 d9 ]10.map 底层数据结构为红黑树,有序,不重复
9 H4 r/ f6 F: G( D1 j
+ w; `! L0 k- \) _% x! E3 p }
& x* t/ |, j+ ]! n! }6 w' `5 }11.multimap 底层数据结构为红黑树,有序,可重复5 w* ~' v7 O' r
2 _6 l4 z" Y5 D3 j' B/ P
& h3 W3 Y3 N6 O3 U12.hash_set 底层数据结构为hash表,无序,不重复
/ C* R! J* Y+ ~' v% ]' Z) y8 t4 }( x7 h- n. R
, U0 y+ N* A" d9 N$ G$ q13.hash_multiset 底层数据结构为hash表,无序,可重复
4 v, U8 r; A# {2 j9 b
9 H W7 j% W( `$ p
6 h( S0 Z( Y( a4 i8 X. Y2 K& X14.hash_map 底层数据结构为hash表,无序,不重复 N1 Q5 x: k: U; ~: |: a
- V6 _: C I6 h6 Y; x3 Y2 X+ w% E. v/ w
15.hash_multimap 底层数据结构为hash表,无序,可重复
5 c' a5 {% X S3 r2 T- l$ B. @8 n! F8 b! i, R2 s0 c
|
|