|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
5 q6 a2 e6 } i6 l; V# k, I* P* h( J! Y7 |% q
7 y# x! |& s9 y* h
9 G. v5 q5 o& \" Y p
4 |4 Z; S3 b. e FC++ STL 的实现:, h2 @) u' z$ `& }4 p: ~5 i
( R `5 x- D# K. E( \
9 R& f% F5 p( z9 j2 {5 L1.vector 底层数据结构为数组 ,支持快速随机访问: p9 O$ u n2 \3 _3 R
' i. K' Y* e7 ]2 X7 I F6 v, j5 k& ~+ o2 p2 E! f* d v( w
2.list 底层数据结构为双向链表,支持快速增删+ ]/ A+ m# @8 w) x& ? `9 f
6 N0 r% m3 Y% I7 g+ t( }4 x1 Y7 C' p
3.deque 底层数据结构为一个中央控制器和多个缓冲区,详细见STL源码剖析P146,支持首尾(中间不能)快速增删,也支持随机访问& R& w' L* \2 H! C
, V: `8 h: v1 F# K" u( K
) o0 e# r+ S: S9 n$ ]& _" E- f& b4.stack 底层一般用23实现,封闭头部即可,不用vector的原因应该是容量大小有限制,扩容耗时
# @% [% b# T7 F$ k$ |4 O
) Z2 _3 E' }. X5 v& ?5 ~7 m& J
; N1 Q2 Q$ W y8 N7 @! @$ Y( K6 T% z5.queue 底层一般用23实现,封闭头部即可,不用vector的原因应该是容量大小有限制,扩容耗时
9 z4 R; K2 D7 a$ s2 o# e2 |7 k
$ U$ Z7 r- G* j% `2 q/ W! k# k. N4 I: f- b s
6.45是适配器,而不叫容器,因为是对容器的再封装
X q3 L; n' k" K- G, [# B* k
- B& A* R" S1 g7 C1 w' \( t, k# o
+ C$ N+ q3 }9 T) r# b* n2 l' e( d7.priority_queue 的底层数据结构一般为vector为底层容器,堆heap为处理规则来管理底层容器实现
7 i) t% }4 i- [& G- @0 N7 w! \! A; R8 Y( y. P- k
5 r# w* e- e o4 J
8.set 底层数据结构为红黑树,有序,不重复8 g& i, U6 W4 y0 o
% E1 z" s# z' r9 I. d/ P
' z7 |) y: r# ~8 R9.multiset 底层数据结构为红黑树,有序,可重复 - b ^7 d/ V/ ]& O6 T- }( i
3 d, _. X# o' e1 M% p6 {' T0 E5 s) [/ I( _ N
10.map 底层数据结构为红黑树,有序,不重复
/ h7 q, o& @ A) M: ? L" {
% t& N8 q! \! B% M9 a2 U/ d* J+ l$ a% x' q
11.multimap 底层数据结构为红黑树,有序,可重复" W* E# Q4 H; }; \8 {% L
2 @/ X( b# g. t5 S- k# v' J) @8 `; Z' E9 d7 O( X6 g
12.hash_set 底层数据结构为hash表,无序,不重复
5 ?. p9 m( t) I% Q" J* c8 k1 e# [2 y5 X1 R1 p9 g8 e- w( B9 U4 J
3 U7 N( Y; q7 Y3 l0 Z% @13.hash_multiset 底层数据结构为hash表,无序,可重复
3 A9 w4 w |% ~ t: t. _. G- J! Z. D& u. e2 x& t' c
9 v5 X8 {$ i% |7 ]
14.hash_map 底层数据结构为hash表,无序,不重复" Y* g2 T' w' y) s) `$ F) H
2 y/ F7 r0 o0 s0 @# f$ z; t8 ]7 \" J. o7 n6 W
15.hash_multimap 底层数据结构为hash表,无序,可重复 : a& X- M0 R" q. C& a& D& K! z# ^
) z j @; z( ~' c3 }
|
|