|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
0 h6 G8 m6 B+ T4 o! [' J& e( n3 U) M# ?" t% d2 v
9 S* b4 X* |+ E& p8 [# _, r# |' c- F* K) z
/ s+ ^4 s# w& u. qC++ STL 的实现:4 H1 v/ }, C' { ?! a' ~
3 o* j! k. X6 j7 |8 f0 o/ ~: t; s% J* G
* }! R5 P0 ~4 e6 `9 N: U1.vector 底层数据结构为数组 ,支持快速随机访问
" F8 F s4 }9 |" F+ w8 ^% G6 P
- O( {; \) f# j
# Y3 z9 I# [- R# b8 O2.list 底层数据结构为双向链表,支持快速增删0 W0 s( j7 D8 T2 I
+ i$ J) S' G2 H0 W( k$ G* f D* J% O0 |+ i, ?% a5 g' c
3.deque 底层数据结构为一个中央控制器和多个缓冲区,详细见STL源码剖析P146,支持首尾(中间不能)快速增删,也支持随机访问
* J; R5 m' W3 K _; m; C; _- t: s) n4 i, v
: v$ c4 a3 T& n! w4 n3 W8 b% T
4.stack 底层一般用23实现,封闭头部即可,不用vector的原因应该是容量大小有限制,扩容耗时
: L6 O2 Q2 @2 i5 ~5 W; n
" d& `& r& [/ a( I1 ?# Z* z" }+ V6 e/ k8 Z
5.queue 底层一般用23实现,封闭头部即可,不用vector的原因应该是容量大小有限制,扩容耗时
. F; A5 S" d) f% d [, V0 S. G: v4 d5 V- R# `( K5 A: O6 t
6 r) ?% [" z$ s+ h, K' _5 |6.45是适配器,而不叫容器,因为是对容器的再封装5 t& e( w4 B* _, `
- _+ K8 P# F' d; K5 H8 `/ ~
8 h. u3 E4 h3 N( f/ e
7.priority_queue 的底层数据结构一般为vector为底层容器,堆heap为处理规则来管理底层容器实现
: k/ s# U, O; v3 Q: D0 u
3 q5 [' v7 g0 x. [, H0 s( d+ r9 F. O7 [! _3 E! I# }
8.set 底层数据结构为红黑树,有序,不重复
7 v( Y1 D5 E. c C0 k; l) B7 D C
6 l5 k" D+ N# _' K- y) Y# s9 x! P8 u0 |: R
9.multiset 底层数据结构为红黑树,有序,可重复 3 A0 c1 n$ O f/ u2 q" P& a/ q* C
$ I$ ]; _- I6 Q, D# F9 d% O& M X3 I0 q
10.map 底层数据结构为红黑树,有序,不重复
' y0 r q! ]# N+ t6 C# l& \1 K
$ W+ ^/ W9 Z: {$ B3 ^& s
5 s/ H" x' l3 @" \5 `' ~0 C2 w11.multimap 底层数据结构为红黑树,有序,可重复
0 e! y& t( F9 M! a7 V
; O1 F, |5 |) K$ Q5 M) E4 s, z. B2 \( ]: N0 u$ I6 _
12.hash_set 底层数据结构为hash表,无序,不重复
0 E) J' e8 B3 ]) d1 O- a6 ^8 g/ i& ]: e9 r0 s; {
4 `; h% U, I) B) R$ U# ^; U, W13.hash_multiset 底层数据结构为hash表,无序,可重复 0 d! y) g# e! k3 a+ \
: S7 i" b2 v( X) X9 ~4 g% ^/ Y! V A
! b) x `$ H* M( c% B d/ ~14.hash_map 底层数据结构为hash表,无序,不重复
7 @5 |( t( D( u$ _2 ]
) X" m& G4 s5 L' z5 S9 D6 ~% B* q' Z. b, F" l: E4 e- S) W5 q
15.hash_multimap 底层数据结构为hash表,无序,可重复
( B+ l ~5 R. e- E9 _: t' V# i [) e/ ]0 z7 x
|
|