|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
, B: y. q& @# n% v" G4 K) y3 {9 ~& m! e# I; C' i/ b
6 e! R* ]- [3 V: p% B6 h
, L& u& L# g' H& `. H2 e9 v
; k. K% j. T+ O4 dC++ STL 的实现:- T7 \4 A1 S" v
8 \3 D. R+ L4 G) J7 a
3 k3 G$ Q; y( k% O1.vector 底层数据结构为数组 ,支持快速随机访问
4 f) I4 W, q; C* N( c: }
0 J. D7 ~% I2 ^3 B' q& t0 n
, [/ R- p- b: _ G! r2.list 底层数据结构为双向链表,支持快速增删
# A( H8 z( x# D v _( d! a, [1 A3 g: K+ j' j5 P
; \+ a4 ^3 S7 V6 ?7 L/ g @/ Q3.deque 底层数据结构为一个中央控制器和多个缓冲区,详细见STL源码剖析P146,支持首尾(中间不能)快速增删,也支持随机访问+ d2 U3 l) T! A5 ]. `! B
- G2 q. t, \5 e( Z) K
# n" e5 L3 W7 a, L6 B" J4.stack 底层一般用23实现,封闭头部即可,不用vector的原因应该是容量大小有限制,扩容耗时; m$ o. p2 w$ W5 P' H, P
) A4 e$ y6 [2 [) Y& T) ]6 ^( B
1 i/ T! O* _' \: ^5.queue 底层一般用23实现,封闭头部即可,不用vector的原因应该是容量大小有限制,扩容耗时! z5 i! P; g; t9 b& J4 D2 T7 O
^$ s/ h5 }) l& P( J# S
& W+ [+ A: |9 l9 i6.45是适配器,而不叫容器,因为是对容器的再封装
5 h G& p( |% q9 J4 ^* \ s1 k& Z/ r0 ]# S7 l( }/ N
9 {! e% o, r: }2 q7 F
7.priority_queue 的底层数据结构一般为vector为底层容器,堆heap为处理规则来管理底层容器实现, o, ]3 G+ e' i# j
: k7 l3 m* v& H; G- m4 V
" Q( `, a) `/ Q; b' [) y5 p( f' L8.set 底层数据结构为红黑树,有序,不重复3 V* {, B, V( v( X' y/ i q
4 l0 M, x- \. I c+ E( C9 q3 w2 ~! J8 E
9.multiset 底层数据结构为红黑树,有序,可重复 & n$ T, Z0 z% H, V. a, M
$ a y9 H1 `9 O0 a7 E# _. k; r1 ?/ B: Z8 N% ?
10.map 底层数据结构为红黑树,有序,不重复
! h/ ]! [5 K S+ i" Q$ X
% _: T; v5 z6 h- Q6 D2 v+ h. g u4 z5 \1 G1 q! ?
11.multimap 底层数据结构为红黑树,有序,可重复1 s2 t7 L6 m/ d8 t( P# b" J6 E
" Z# l+ w) e/ o$ [) C
3 w/ o8 U' ]4 P& |5 o
12.hash_set 底层数据结构为hash表,无序,不重复
. G$ @$ N: X( F" p" H5 _7 f% l6 r" s4 A7 R9 t' Z
/ g$ z6 v( A; ]$ F- I" H8 O4 \
13.hash_multiset 底层数据结构为hash表,无序,可重复 & h6 q" F+ ?/ c' G( H$ C4 k/ O+ m
/ y# p' i9 b& {: h
/ G1 H/ U6 B' f# q" e14.hash_map 底层数据结构为hash表,无序,不重复
6 D: W$ p: M6 @7 B# A
$ W e4 @' D% I! q$ V( P4 X0 i0 n8 x3 S& Z
15.hash_multimap 底层数据结构为hash表,无序,可重复 ( B3 ~& j! n0 h% P4 H" b
+ Y+ J, E/ w" M8 U }( J4 W2 E
|
|