|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
$ P$ b: t8 x6 _3 k; r- B
# e2 y. R+ p: w1 q5 ?
5 ? o" g2 A" o+ s7 P6 n) Z( T* r& B$ u6 D- q( \) @3 D1 C: D, O
# ^3 V: S! d' y" ]2 k( o9 {
C++ STL 的实现:$ u q* }0 E: \* F" r/ e
( }+ P( c W- S; w# g) m+ g( G
4 c" t* U" }- W1 O- n" O2 h3 p1.vector 底层数据结构为数组 ,支持快速随机访问
. [: N4 r! r; ~- L4 R0 c' F0 K/ ~ D% D" U, o
3 Y4 M- X& N b Q2.list 底层数据结构为双向链表,支持快速增删2 X; Z/ ]1 L* g- h4 d
! m* @" s" e3 p
. n: A# a; D- E: @ z9 O0 F3.deque 底层数据结构为一个中央控制器和多个缓冲区,详细见STL源码剖析P146,支持首尾(中间不能)快速增删,也支持随机访问. V7 I; ?8 l# U9 ^6 ?8 ?4 A
+ B V) L' p2 p4 z' J
4 A" v6 ?3 w" m5 ^" e! p. i
4.stack 底层一般用23实现,封闭头部即可,不用vector的原因应该是容量大小有限制,扩容耗时
" _4 |# H' Z& h) P- X" R* B8 t/ ?
& y8 J4 _ Y: {5 p% ?: C6 S! J
5.queue 底层一般用23实现,封闭头部即可,不用vector的原因应该是容量大小有限制,扩容耗时
" W- y- j4 ^( Q7 G; `
% l, |& h6 W: Y3 f2 }. F y3 N' G( E: u; U) v/ j$ o3 J0 t! g% A
6.45是适配器,而不叫容器,因为是对容器的再封装
" Y( y, D$ p; l0 N5 K- Z) m8 G7 ^' t) z+ z+ V7 J7 K
# n+ u: q$ u* U" E
7.priority_queue 的底层数据结构一般为vector为底层容器,堆heap为处理规则来管理底层容器实现+ K# I) g0 q3 w; E& g( D i% N
1 P# o8 Z% t4 ?4 I
3 q; i+ I" f$ e ^4 C* {8.set 底层数据结构为红黑树,有序,不重复1 l& C, v- j, Q& K- O% w2 s
$ b) A9 B; a- B% u1 r6 H
3 Q! Q# f- M+ ~. \% W: w9 H9.multiset 底层数据结构为红黑树,有序,可重复
$ _( A) s7 c: ]" f7 @" n: U7 Y) ~. p" U# t
9 r- B$ x3 m0 e4 |0 L7 T6 ]10.map 底层数据结构为红黑树,有序,不重复5 N' Y0 }9 C- X! k' P
( X" c9 R8 f/ a0 l
4 c0 ~2 E, j" J8 K/ j3 [: h- T11.multimap 底层数据结构为红黑树,有序,可重复5 R- X4 F* M$ t" a( d$ X) S
9 ~9 F) |* y! L. S
4 Z, U6 t8 q5 K- N5 D; x12.hash_set 底层数据结构为hash表,无序,不重复
0 G: u, }; |1 U% n: n0 z6 r0 J1 {/ h! l# A6 ]& P9 G0 i# y
) g" q* a+ W' ? b
13.hash_multiset 底层数据结构为hash表,无序,可重复 5 O2 _/ R- ]+ ]. p# i
4 }, K: M0 e( n |! l" e4 c7 l) |, ]6 Q8 R% ~& P
14.hash_map 底层数据结构为hash表,无序,不重复- }* M/ P+ G0 ]3 g# C* o# s
, W4 M, N$ A* p3 G3 c( B5 Y
" p# h# I# y$ A* N! p8 T) R
15.hash_multimap 底层数据结构为hash表,无序,可重复 5 I" m1 n Z2 k* K9 e5 r3 m m: @
! _2 U' F z; ]& m! }) ^
|
|