|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
" j& V4 V9 ~1 t/ c1 x
0 V1 I0 [/ Z7 s0 D1 N c) j J4 E
# T8 ] v% c1 S* I- C
: E/ T+ f* c4 r' t
7 m2 z7 S5 h; EC++ STL 的实现:
4 O% @0 d9 e( m0 v% s
$ D/ e. z# v! x7 h b2 i3 S$ V2 ^+ h7 u+ F
1.vector 底层数据结构为数组 ,支持快速随机访问* `4 p: V; m: {9 u
( [5 u/ [6 Y8 f! t- d: ?3 V
* ~ h! e# }) S+ j
2.list 底层数据结构为双向链表,支持快速增删
+ k( |+ c; n+ @. I: s/ J6 W# t' u3 @: h. O- q- e, b6 D
7 I1 Q% Z) p/ _1 V* x w
3.deque 底层数据结构为一个中央控制器和多个缓冲区,详细见STL源码剖析P146,支持首尾(中间不能)快速增删,也支持随机访问1 s. }# }5 T1 Q) V1 h4 P* c! l& c
! u* t- \. Y' G( O, b' w2 r8 D) h1 C' `
4.stack 底层一般用23实现,封闭头部即可,不用vector的原因应该是容量大小有限制,扩容耗时
0 [) g0 c& E. Y" b5 k/ J8 G1 |4 Y" v0 F4 ~2 i. A7 H1 j( x
) K3 k9 V4 C2 Q9 m0 f3 a
5.queue 底层一般用23实现,封闭头部即可,不用vector的原因应该是容量大小有限制,扩容耗时 x: }! Z* Q; r& h$ `/ r# k
% n s7 g9 j, E* n# x
) X/ n2 |" @2 I( e9 @# Q8 n6.45是适配器,而不叫容器,因为是对容器的再封装% Z+ o8 @/ D8 T" T) E9 O1 J
2 V8 P4 I4 q6 t$ g+ R% a7 M9 Q7 Z% \# b k1 o" Z: x% x" a, V& V9 E
7.priority_queue 的底层数据结构一般为vector为底层容器,堆heap为处理规则来管理底层容器实现; L. L6 J E a v h1 \- M
) b5 s1 l& j$ Z( \5 I9 h! L% y5 d
" T Y( |* [+ d# M1 A
8.set 底层数据结构为红黑树,有序,不重复
9 |+ F1 Z1 ]- {; }& j' i- d# n$ j4 [1 U) {
3 Y) ?5 X' t# @2 ]9.multiset 底层数据结构为红黑树,有序,可重复 6 T, ^9 C8 q3 }& Q1 M. x& h c
! C( G! Z6 ^4 o: n4 M" g+ l, \3 w4 ?: B& l, W J# u% w$ L' n" S$ t
10.map 底层数据结构为红黑树,有序,不重复6 @; ~% V" _' e) h' O$ {7 O; \
" W( [/ Z7 T' X* r
0 D) A/ C' `8 f& j* e8 P
11.multimap 底层数据结构为红黑树,有序,可重复8 w( o7 o' {$ d* A8 a6 E
% k+ H, A7 F s" N, e" y
! e2 o0 a/ v0 L3 a7 r12.hash_set 底层数据结构为hash表,无序,不重复( i0 F- ]0 P$ ?, W3 W
7 R; Q' |2 a0 J9 f' \. v: I" n! P9 C8 \& H% I$ n% }0 ?8 u
13.hash_multiset 底层数据结构为hash表,无序,可重复 3 r7 u* q- Y' g/ Y+ P6 @3 U# F
2 l( D `" v8 @% E) X
) X( [1 V6 J$ l2 S) D; y14.hash_map 底层数据结构为hash表,无序,不重复
4 R" V# k. w8 Y/ j( u9 T" V; C+ R7 r0 `% p7 k/ y
# Y* \% k# Q2 Y- t
15.hash_multimap 底层数据结构为hash表,无序,可重复 6 A$ {1 U, `) i8 x
) t" t8 f$ U. Y/ g. o
|
|