|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
7 G1 L6 r' i: T6 f
. Q. x! I$ D& v* g# R
; D& p% f4 ?. Q& t4 ]( ^ A, s2 g
m+ b+ M0 H4 q1 j6 T' m( I
" N- P, s3 @' bC++ STL 的实现:0 Q% l- r6 U8 S( Y
& v+ A* I( X7 T
7 S$ F) Z+ d* M4 Y$ o+ Q1.vector 底层数据结构为数组 ,支持快速随机访问
7 o3 ~7 G g# C- k. y8 D7 l) A9 g, G9 ~( R! @1 L; q8 G
& V& b; C) g: U3 M" w- u* K2.list 底层数据结构为双向链表,支持快速增删; [/ H; n% q5 }7 ^1 _
2 M) }# A% A! U$ l3 p5 H$ f: f% G0 B( A, O7 b9 R$ F b
3.deque 底层数据结构为一个中央控制器和多个缓冲区,详细见STL源码剖析P146,支持首尾(中间不能)快速增删,也支持随机访问
2 h9 H, u" s; G% A D5 X# V$ N' G$ w& d: C. b
- a% A7 u7 K: u! J& y4.stack 底层一般用23实现,封闭头部即可,不用vector的原因应该是容量大小有限制,扩容耗时
% B1 W) ]" L, Y' O) E5 S) s- o! I2 {/ Z8 |) l( t3 Z O* A
v1 _$ y* P' Z% M2 b+ J2 P
5.queue 底层一般用23实现,封闭头部即可,不用vector的原因应该是容量大小有限制,扩容耗时
0 R/ y! l$ ?7 L1 @. ]* U' Y" m% d2 W6 j+ L/ L2 v! }
$ q6 I/ q! `, @! C }5 s6.45是适配器,而不叫容器,因为是对容器的再封装
& g4 g' e' g: g% {8 w. B; ~: `+ @5 |4 t2 ^# I2 H# Y' P5 V( ~
; l- e7 B7 e3 {( ]
7.priority_queue 的底层数据结构一般为vector为底层容器,堆heap为处理规则来管理底层容器实现7 N; l" t9 x9 e3 i1 G V9 z4 n9 X% X
3 M1 [5 R3 O: R
! @+ a5 s3 L/ {9 V# R8.set 底层数据结构为红黑树,有序,不重复7 O" `8 E8 g. ]( R
9 e; g& l" V0 J9 P+ d4 M3 _
5 B; }3 s; K. U% e0 l9.multiset 底层数据结构为红黑树,有序,可重复
$ Y5 o( q3 Q) m, V& F
8 Y% v4 W' b0 l. n/ B' p' s) h
" P9 S+ ~' U6 c& c% A1 |10.map 底层数据结构为红黑树,有序,不重复
( I9 P; D: F6 `$ N) D) { \" y1 X+ q$ r* x
, u8 ]( q8 U' @9 b( \11.multimap 底层数据结构为红黑树,有序,可重复
$ Q: |+ ~$ v( g' i; E* b% G' o" M/ Z8 N4 [% l# p2 T g9 [
9 m0 X8 V6 ^3 U, }1 n12.hash_set 底层数据结构为hash表,无序,不重复* e$ h7 e" R1 ]7 P4 s1 S+ g* Q3 h
3 I) }) C$ a, k4 Z6 y
) j( `# U Y5 m1 n
13.hash_multiset 底层数据结构为hash表,无序,可重复
! u1 v" T. P0 ~$ ~+ {
* r3 u2 d( N, K8 o2 n
$ {3 U& Q4 t1 ~14.hash_map 底层数据结构为hash表,无序,不重复
/ f! T; D$ o) I6 X
* L$ k* e: m B7 @) r1 C1 u
) m3 S n: s* w6 @8 r- I/ B9 ~15.hash_multimap 底层数据结构为hash表,无序,可重复 2 T p( G8 }, ?, G
* a: m, o! X7 Y2 E0 f
|
|