|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
* ] {* H/ K |* O3 I8 D8 O/ N0 Y+ p
; T4 q/ F& H- m# B' K- @4 k
0 k2 D6 T$ _: g6 F; S& w4 M
) N' {& M2 N1 qC++ STL 的实现:
- I4 ]2 j6 W: W9 l
- l* | ~4 [! a' o$ e: E4 Z
- c2 F g- @+ W$ D P( Y9 T1.vector 底层数据结构为数组 ,支持快速随机访问% S" [ z* H. ?
. w4 F2 A# r+ X" D
7 Q( N9 i0 y4 f7 E; o' O, {2.list 底层数据结构为双向链表,支持快速增删
$ g2 W9 F5 Q/ M" x2 A( b/ w2 M- a1 U6 O* ~" M! ]
) n6 U$ V2 n. [2 d- S0 {
3.deque 底层数据结构为一个中央控制器和多个缓冲区,详细见STL源码剖析P146,支持首尾(中间不能)快速增删,也支持随机访问 @: T( ?, _) ^) K9 G, c
, G( _- K7 |' L0 }( w/ U
$ G) P2 ~1 X* B& t4.stack 底层一般用23实现,封闭头部即可,不用vector的原因应该是容量大小有限制,扩容耗时
2 Y R& M- u1 Y: O U1 R9 w9 s
1 M3 ^3 C' G; `' S9 Y
* U! F* i- J# U4 }* M4 ?& J1 z, z5.queue 底层一般用23实现,封闭头部即可,不用vector的原因应该是容量大小有限制,扩容耗时
! j6 @3 q+ N( {& K# k6 \- V+ _) o% K1 H% ?, e& D x* L# `+ l
\1 m0 u& i0 Z& j1 t- {6.45是适配器,而不叫容器,因为是对容器的再封装1 z6 T9 u) {& s0 ]& l6 P6 |
: }2 O; `9 M) i( f$ G
$ L" v$ M5 e/ M6 y
7.priority_queue 的底层数据结构一般为vector为底层容器,堆heap为处理规则来管理底层容器实现& [: K' k1 A, B! h2 e
/ X- {! Q+ H5 b4 r9 F! f
9 c# g, S, Q8 ^$ Z
8.set 底层数据结构为红黑树,有序,不重复$ T1 N( g; R8 t) ?1 \
# _, j+ J# m% W" m, C, q* a
% ?: ], q; c) \/ B9.multiset 底层数据结构为红黑树,有序,可重复
, \9 p4 X0 p! P
" I6 Q |, h( x) m7 v
0 Z5 F4 @( c+ K1 T+ l- Y10.map 底层数据结构为红黑树,有序,不重复- u/ E9 [, b$ \0 A6 p8 h
& o/ b; @0 X* v3 A1 X" J- C
$ @7 |9 [! _: c0 s1 H3 Q
11.multimap 底层数据结构为红黑树,有序,可重复$ ?0 U3 I+ y0 {9 R
# E9 \4 p# r. C1 ]: V! I
" j$ A4 D4 A- i7 F" U Z12.hash_set 底层数据结构为hash表,无序,不重复
- O2 m1 A3 j3 `) \# [+ M/ F1 ~% Q7 c7 ^
2 @: \5 t }- f9 U, s
13.hash_multiset 底层数据结构为hash表,无序,可重复 0 m, J2 ^# Y8 I6 O
[2 `$ I, U6 `1 W8 H9 B
8 W$ d7 \9 ?- D14.hash_map 底层数据结构为hash表,无序,不重复
" M5 ^7 V3 \; B1 F$ r1 F
& S$ W- `8 V$ r& l# o; n% S4 ]& k+ j- l7 L& Q! u) |- h
15.hash_multimap 底层数据结构为hash表,无序,可重复 0 P* }4 u" u. G" K1 R# P& U4 N
" A V4 l; q9 }5 x9 r |
|