|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
7 S" u* R# f; u7 M7 _2 U5 E$ g# p& N9 o I
6 l/ E* I3 ?) b) @- l' N; F' b) P0 ]' l2 v9 ^5 f/ H- d
u7 [- j5 d& d
C++ STL 的实现:2 M8 v. f- Z3 @+ e" [
9 a; r4 G7 ?* E& I: ^9 U/ c0 W
! ~- J, @& @7 v8 \. z" \1.vector 底层数据结构为数组 ,支持快速随机访问
2 P0 {$ F, s- V2 B2 I0 x! v8 Q4 s4 {( N! Z6 l
4 g! C' Q, m# `7 ~8 ?
2.list 底层数据结构为双向链表,支持快速增删/ T# z# D! i$ c+ Q, t* }% [0 m; C N
! W N3 X+ \: E1 l* t5 r
4 v* U& r: E, p7 d
3.deque 底层数据结构为一个中央控制器和多个缓冲区,详细见STL源码剖析P146,支持首尾(中间不能)快速增删,也支持随机访问' T K) w7 Y% {, n4 L" F- l. G$ }
, J0 g& U C1 O) ^! A! Y* u& M1 g+ d8 n+ S$ k
4.stack 底层一般用23实现,封闭头部即可,不用vector的原因应该是容量大小有限制,扩容耗时
. L1 ~1 U/ `1 B* s+ k% B K% |$ B( I$ d+ [: p1 F2 d) }
# [( }' E" P6 [. b. J$ s* X5.queue 底层一般用23实现,封闭头部即可,不用vector的原因应该是容量大小有限制,扩容耗时0 Q& l5 I/ W& u
! ] u4 p1 u, _
$ T* e. Y' U8 X/ w' H% ]1 C, S6.45是适配器,而不叫容器,因为是对容器的再封装
. H( A3 y3 J/ |! e% G% W2 |% W6 M7 F8 I
% K) P2 z5 S2 E. ~! S, Y0 ~1 {7.priority_queue 的底层数据结构一般为vector为底层容器,堆heap为处理规则来管理底层容器实现4 |4 Y& d. g9 z8 X7 }
% b/ w( M0 _: U1 f
4 o( X% E/ P& B5 l, R5 ^8.set 底层数据结构为红黑树,有序,不重复
* E7 {1 Q3 B( e/ h* k+ ~& p T8 q: X x3 \3 `( r; [
# L! u3 K7 O$ {8 a$ P" u
9.multiset 底层数据结构为红黑树,有序,可重复 , s! O* t6 X$ O2 q
/ \& X8 z8 y# ^6 b
* c) F& c6 h `8 a0 J10.map 底层数据结构为红黑树,有序,不重复, A9 r w/ `9 f; `+ {- ^
/ `# `( E2 r, K) e" i& T7 e, p# W, w* `9 q" n, r2 o
11.multimap 底层数据结构为红黑树,有序,可重复
" n% n1 u& P4 q- e5 I; u) k' {% ]6 w7 q# L6 T q& \) u3 p
% U9 G& g- x! v8 c# q12.hash_set 底层数据结构为hash表,无序,不重复6 l8 ~: D0 f8 |$ G% ^
% _ b& ?! o( \1 f) h+ e! Z( {
' R! G; |9 e7 i
13.hash_multiset 底层数据结构为hash表,无序,可重复
: C* S) W8 `2 j8 A/ I9 p. D
" i; f$ ^. H: i" a( o4 v( k+ m
. s h/ X1 |0 e E- D14.hash_map 底层数据结构为hash表,无序,不重复
) |2 c9 {: G7 b2 r( r: v, Y
2 O, Q0 @; S0 x# Z; v5 M4 |9 V
% U K. K" ^) ]) J; N4 o15.hash_multimap 底层数据结构为hash表,无序,可重复 / m2 S7 n+ m3 u* X( V: V3 O% F
% ?. [' _8 B2 L+ G" r: t, S3 m
|
|