|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
- s# w3 \# E- @2 D: o- w
: w$ _& P- T" }$ `+ m; R7 d) R# O( v. @, F5 Z9 A
6 ~' p. j( @! t) d, P
, _5 S z' Y3 S9 `/ {C++ STL 的实现:% X/ {6 l: l, M' w5 v
+ ]4 ^. p/ | g K- Q6 N4 U1 b2 O2 |
$ g$ q: H8 e3 s) K1.vector 底层数据结构为数组 ,支持快速随机访问) L1 B. @& r- ~3 L" Q2 d$ S
; o/ L$ q9 i# n$ s9 D4 `# H) [
! j8 R& b8 e1 c) v# k
2.list 底层数据结构为双向链表,支持快速增删
1 |+ W7 d Y# q2 d5 H4 Z5 \& u
7 J4 c1 S. Z. b- _" `4 [% P9 Z5 `* ]( D% \
3.deque 底层数据结构为一个中央控制器和多个缓冲区,详细见STL源码剖析P146,支持首尾(中间不能)快速增删,也支持随机访问% M3 N; [$ s8 F ]- P- p
- c3 i! N |9 h1 @& ~
9 p k, l4 z' f9 x& p; { {4.stack 底层一般用23实现,封闭头部即可,不用vector的原因应该是容量大小有限制,扩容耗时
2 m9 }# `- W) U0 @$ L
0 A6 d p/ {& [+ V9 q$ |) [' V+ i
5.queue 底层一般用23实现,封闭头部即可,不用vector的原因应该是容量大小有限制,扩容耗时
" `' {$ x0 A4 a5 U8 H& c
& R' Z3 O4 Q; O* f
0 w0 a8 K" C$ {6 D9 ~6.45是适配器,而不叫容器,因为是对容器的再封装5 M$ g* {4 {6 v1 J }. F: J
6 Z- T0 Z' p, l& Z8 Y# @$ i! |# A
3 r) N7 s, Z' P2 E ^) _2 d
7.priority_queue 的底层数据结构一般为vector为底层容器,堆heap为处理规则来管理底层容器实现/ u+ p* h7 r6 i9 F& ?
; m& V4 G# Y0 P5 b7 ]2 }
. n' N/ g2 J7 C- L9 H& T( z8.set 底层数据结构为红黑树,有序,不重复
: ]1 z% B, x$ P+ h1 W: T& s) @5 z! Q. b% _
! n# m6 y7 V( e% f+ V% Q
9.multiset 底层数据结构为红黑树,有序,可重复 2 ]. z; c8 E y3 }
7 K+ T) v( `8 W" x& g
* w; B2 {4 X2 q: i s/ ~" W
10.map 底层数据结构为红黑树,有序,不重复$ B$ z1 Y/ {9 n( ] F0 `. m
* T7 d5 m! m8 W1 i$ U
. ?1 ~1 v8 `" V7 y8 }11.multimap 底层数据结构为红黑树,有序,可重复
. y( U; @, `0 ]
, q; y- _% E# X$ |
, r" E# O' _: c% G/ v, `12.hash_set 底层数据结构为hash表,无序,不重复+ e- d% a* b6 G+ s5 C0 j
2 ]: g( A3 |) R8 S/ P
2 g, m% G$ c% K! i& i13.hash_multiset 底层数据结构为hash表,无序,可重复
% V1 K# f3 P: N- |' i2 d6 Q5 I! ]6 |5 n9 s) \: d7 c
; M e/ R& R& G
14.hash_map 底层数据结构为hash表,无序,不重复6 m) K1 Q |; `( `
' F7 Y+ M; }0 q$ v% h% ?: y
. X/ J, V/ S9 p$ I
15.hash_multimap 底层数据结构为hash表,无序,可重复
0 ?/ F" X; p9 l( l7 A; O+ N) C% I. x0 ?2 L
|
|