|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
0 Q/ f& t/ X- K8 T/ [
, H6 ` c. y0 I3 ^2 a; f
/ ~, q; D" P5 L
3 r- O( h j+ m: Y6 G, a0 K {
; @/ s+ [+ R: _4 pC++ STL 的实现:
3 }2 l& W5 S$ P# T: U
4 p+ \2 x" ~" o& D4 v' z
! ]$ W( q* C- \$ Q1.vector 底层数据结构为数组 ,支持快速随机访问
7 j2 Q( d, \! }( W) D& ^ J
" [" n7 k& f( R) ~, f/ R9 `0 b" C d r, Q% ~
2.list 底层数据结构为双向链表,支持快速增删
i& V4 [% w* e# T& }6 D, q9 x
" F2 V* e6 ]3 A1 g/ y' c' N9 t! p3 A7 ~9 b6 h8 A. J
3.deque 底层数据结构为一个中央控制器和多个缓冲区,详细见STL源码剖析P146,支持首尾(中间不能)快速增删,也支持随机访问" X! y; [- H/ `- e- F. I
4 e6 J9 i: U0 }: [" V1 o' p
6 j6 B6 |. F. M& r, P+ n$ Q& r
4.stack 底层一般用23实现,封闭头部即可,不用vector的原因应该是容量大小有限制,扩容耗时2 |6 D/ ]$ ?9 }% Y% C5 ?( G
& I! K+ _! i" J7 b9 g
: _& U& @7 |/ w, m# [8 w- _* `; Q5.queue 底层一般用23实现,封闭头部即可,不用vector的原因应该是容量大小有限制,扩容耗时 g; h- L9 g" e, @* p; n, e7 `
2 K7 e6 M- @. b8 m* ^
. W4 I* V3 E+ O& m! W5 Y. i
6.45是适配器,而不叫容器,因为是对容器的再封装
n0 A5 }# }9 Q/ A6 O! v* n' H9 M
2 _ `! Q' ~! V0 o: ?* d$ C: y
' z4 `7 `0 h8 I7 z3 U! t7.priority_queue 的底层数据结构一般为vector为底层容器,堆heap为处理规则来管理底层容器实现. ]+ l$ I5 P( f( q8 K
( \- n7 G g5 E
$ \/ B" j" g1 k( i! ] F( A
8.set 底层数据结构为红黑树,有序,不重复
9 [7 _$ {7 E: O6 f
& T6 K+ |# h$ a9 |! U# M6 F; V' [ A1 U* `8 ? U3 ?
9.multiset 底层数据结构为红黑树,有序,可重复 , J; x& U- D. ]- F. E: V
& q7 `* y. g# v6 y8 \' I0 d3 h6 w% B; ]$ c; R# \1 j9 m
10.map 底层数据结构为红黑树,有序,不重复
, y( ]9 F. N8 S$ W1 Y; v. l( c( r4 w
' o9 k, Y a! e3 |" t# E: f4 a: D& Z# T, M
11.multimap 底层数据结构为红黑树,有序,可重复$ }( x g' _- D/ o; R& P4 m
5 L1 b" J$ o) X6 M' }
+ P% ^6 Y! M# W [. U12.hash_set 底层数据结构为hash表,无序,不重复/ E! ^- |; a5 W
6 [7 L4 M* T( N6 i7 T6 ]# ^8 I' v# n$ i5 P3 s
13.hash_multiset 底层数据结构为hash表,无序,可重复
: _( o7 B ~: M" b( O6 ]
/ B& v) j6 _8 v( c
5 D6 L3 z" a \) A e14.hash_map 底层数据结构为hash表,无序,不重复
* o- _) v: k: W5 _; ~) m7 ~" N& B5 H& I$ J5 t
( m+ H. H$ B) A! e0 C/ T
15.hash_multimap 底层数据结构为hash表,无序,可重复 - l& W7 S4 O6 U5 d6 \( I
- f$ h- ]& R& E. i0 H |
|