|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
; o0 i0 l* X" {! _# I+ C
1. map容器类型以及map类概述! X: i' {7 R- a- U3 Y" E
' E3 W% }1 \' fmap是将一个量映射到另一个量上,此是前面的量就是map的键(key),后面的量就是map的数据(value)。map的键和对应的数据都储存在map中。一个map条目包括唯一的键和对应的数据。map容器可以理解为一种快速查找数据结构的键。
4 c4 A- b' B" I5 B6 S6 i- l' l% v1 |# @/ f
可以当作map的键的数据类型:
) ?2 c e0 C# }0 R/ N) w* y# H
1 @/ U8 @: v, q- 1 X N字符串
- 单精度或双精度实数标量
- 有符号或无符号标量
9 ?% ~: ~3 P# t( z T; n
6 w7 b3 R" p; {3 v
9 }2 p; k# W Kmap类的三个属性:! x5 |/ F+ @" k6 G# H- V+ ?8 @
5 r- r. ~2 o. I
属性 | 说明 | 默认值 | Count | 无符号64位整数,表示map对象中存储的key/value对的总数 | 0 | КеyТype | 字符串,表示map对象中包括的key的类型 | char | ValueType | 字符串,表示map对象中包括的数据类型 | any | . m7 ], }' Q) X& o& O5 U! U
7 Y9 X, h8 R: n# ?( [' i9 ~
% ~+ O7 o; m* Y, qmap属性的查看方法:7 V' y, J: x; y3 V4 @& `
6 A! q+ ]2 E8 F4 Y
map名+小数点“.”+map的属性名
; f" U& w8 u+ w7 h0 x& g) T* ~& B0 o: T" ]4 h, f% k
例如:/ [" M$ p2 K! H; e, v
3 ]0 O6 A0 ^4 ]1 y* X$ D9 C' l) CmapW.ValueType6 ~* @# O- R0 ^4 e+ m
3 J; v \2 ]* R% ?, R( s2. 创建map对象
7 S+ q0 k: B- l) H5 V# y3 Y, v$ ]. I
创建方法:3 s9 I1 {8 O! r; M7 F+ X
$ x- f- Y* W9 ~
mapObj=containers.Map({' v; c; Q2 Y! w2 @$ k& ~0 s
key1,key2,...},{
( E5 Z: i8 N e* S+ s0 O/ P val1,val2,...})
1 M _! {3 N- L6 C! Q4 O% 若键和值为字符串时
R; a+ b8 ?2 R m% VmapObj=containers.Map({+ }3 }( E! O, u* q9 T J
'key1','key2',...},{; H$ T0 O$ C! P! i' i- r0 m& m
'val1','val2',...})& M6 o3 m% w) L
( V" e3 |4 d: u3 Y4 w8 d
- J+ S2 W' Y4 A9 x# |
样例: K, n9 ~3 r" w2 D$ e
! [% d5 u6 U. _8 c- V: |( K6 s3 a! J
>> A=containers.Map({! A7 d- J. w; b& g$ R% o
'A','B','C'},{
. l9 Z2 q7 ?! G8 h4 H g: M 95,85,75})
0 [% R" [* \8 S
/ ?* N9 e" t/ F# I6 mA =
, q; R4 U5 m4 w7 q0 u- i* _0 C3 Z; i/ N
Map - 属性:& }1 ~8 C: V* E9 x- D3 L0 [2 `/ b
9 W7 @- V9 ^# Y: q
Count: 3. M2 W! u6 `2 P: W* l
KeyType: char
7 v! Y" w2 Q1 Z- z+ | ValueType: double
. |; F7 x$ R# j# q2 C: N3 R! l4 ~
5 i' ^/ T3 \2 A) a/ s0 z>>
, z j0 }" W5 R7 q' ]* J
0 o5 ~) c+ X' {' _, d$ T9 R- H* s4 ?# L! i: C/ J
其他方法:先创建一个空的map对象,然后使用keys和values方法对其内容及进行补充。
' `5 Y, L& y9 |
5 _; h( [4 O( b* T4 Gnewmap=containers.Map() % 创建一个空的map对象8 P1 w# v- {" \% Z# b
: t* G4 b7 Q/ g, A+ X
0 W, R7 D0 D* ]4 ~9 z7 H* s* H0 D) X9 B, z3 u' q8 s O
9 M% s. G6 x; Z0 y5 _
3. 查看/读取map对象4 N' @ z. M& m$ X+ t# t
) T d6 \% V1 K# K
; T* P. [) P0 t5 {- e8 Mkeys(mapObj) 3 _0 N, j1 h# a8 s0 }# `# d
values(mapObj)5 ^8 I; K# h: h v1 G1 W
6 X, p. L; a, O: D- c2 r3 t$ a( T* W7 Z9 [! V
样例:1 D9 \- y5 E9 Y8 y+ V
$ [. c5 |! I; ^) M! s% N5 f" v" F" C6 R
>> keys(A)/ m0 L1 [+ C% w% P- x- z
8 G1 c5 p& ~* c8 j7 m. s) ~) v. i7 i
ans =
2 ]" b/ d3 s5 I/ O* y, K
2 G2 `, s% {/ F5 A( g9 K 1×3 cell 数组4 S7 T" G( a6 o) t2 ?7 u' O
- d, t' j; @9 Z
{
* @3 T @8 g3 u+ h 'A'} {
- z8 H+ M( R0 s( m, G 'B'} {
# M! r2 W1 T' a, }! ~( X 'C'}$ {2 ` G7 e; X) K& [% n
! I8 Y f& [8 S# }+ R$ Y3 }: V7 A>> values(A)' W, b0 @' c2 o( C# P2 S
. C. @4 c- k# j2 _ans =
+ H1 \0 E0 T4 ]' V. U5 |* O$ |6 I* k2 Y# X2 ~$ d
1×3 cell 数组2 Z, k6 O% C- @) [
/ E4 Q' T4 n9 s3 I {) \: p/ K3 ]6 [ n8 V
[95]} {
* q7 M& x! {8 q) c; G: S [85]} {( R/ G' ]) H; m) A5 K
[75]}
9 Y1 k9 Y. O' {9 c
3 Z! G9 |8 A& H; f" H. N, S5 G>>1 m$ j( N. _; }+ m% f) F2 `
o T8 @6 D a" o" G! M: q ]* O* k U1 f- ~( `
- 读取map对象
. d7 l1 ]% G4 j5 K9 ?1 |& I' X+ L
# r8 \+ a$ g# L知道map的键读取对应的值
, I7 K9 r5 q j4 ~* T! ~ l) \+ b: P# G" k4 K) B! H
valueName=mapName(keyName)4 @" ^ Z# {: ~( E+ [4 A) E
1 K$ r9 s, n; Y: Y$ \; a+ S5 l% h1 ?, U; @
样例:/ V& | t8 R6 h
8 u& K2 T8 j' ^! }5 C# ~>> c=A('B') % 读取一个值5 `( _; t- \" r
! h+ b9 C2 Q7 P4 t1 d
c =' X" ~6 p$ U( M& S2 L
3 ~1 n& @* [# \7 b- w$ J
85! O+ `3 Q0 ?7 z7 `* Q- T; j2 I
* C8 ~) i! q1 e0 ]/ J- s4 D
>>& E3 A2 a B x! |, G
, ^- s8 Y& z4 _: c, q) x" K
# d$ T; x" K. C6 h' Y* i4 o知道多个键值读取方法:使用函数values
1 ~3 S+ M1 x9 K2 E. i& \7 E+ X3 W# G9 j: U( `- T/ Z* x- j
values(mapObj,{1 l! h3 ]& Q/ p3 m/ S9 Y9 U+ e
'keyi','keyj',...})2 X! Y. |0 D$ \' l. M! p5 `# ?
3 a2 ^! @3 W1 r; a# ]
: u0 z! l/ m/ h& o& S2 Z样例:
* c1 Y% T! E" N, A! e
$ K& H2 G. ]. U/ j( {; g! E' T>> d=values(A,{- l- w3 }+ J; J4 D: @! h/ p
'A','C'})* J; M0 v6 U3 h( p1 D: o+ Y
3 i( k: o( s6 b+ g/ B1 ~
d =
' p3 q4 [. }" i5 Q! }4 `) k0 n# ^: p/ V9 u+ @' l
1×2 cell 数组
! m% \; b v$ ?, W$ c+ A6 t6 {6 R& ]9 O) F, K( j6 N3 ^8 a
{/ Q a0 g' o( Q8 Y" ~
[95]} {
) @2 Y. H7 ?1 F [75]}
4 I5 \1 d0 z" I1 k! Y/ @ b0 D t: f8 J& c
>>9 ~8 A4 e+ V2 J5 F6 q& O
- Z7 P# f# |( e" }; C) V- f- c/ I
! t1 q' y! T. ]3 G1 \3 }+ O4. 编辑map对象
0 R" y- w; q' f {3 E3 S8 Q* G
2 t% `. k X; \; E/ x; T' p- 删除map对象中的key/values对:使用remove函数。
: |8 t9 T# W" d+ ~. j s
5 @; u7 ~% B9 c; |7 Kremove('mapname','keyname')
/ Q2 N) C, y9 Y% _( {5 z! r
$ ]0 K9 j* K8 q; h" @1 K p>> remove(A,'C')
X" e- E% Q) Y i
# v" P+ h; L5 q! g& R" Tans = 6 b$ m0 _; O Y0 k3 ~7 T
4 X2 F; f# j5 @; D. I5 I* p4 s% S Map - 属性:' R! Z/ S$ |7 z# w e% B
( p3 L( L5 ?* F
Count: 2
3 l! M5 g) P; F% `' F2 j KeyType: char- i. J. R9 h+ ?4 l1 w! R4 |
ValueType: double1 ?& O/ E" k$ H: T" C
- l) B0 L9 x0 i5 k2 @>> keys(A)
- K( q) D9 {$ w% f; `9 I
( N: i6 h2 W( y) gans =
/ w7 a/ o! l0 v8 h
% G! E5 \) Y: \# y1 ^ 1×2 cell 数组
- E) K i) P3 T/ z/ y: N2 Z2 M3 ]- |0 r4 j- q4 I& A" r
{8 O2 I+ g' C: U. a+ y
'A'} {
5 X% [5 E( |/ \& `3 ~0 n 'B'}( ~# k/ A$ r/ O( l# ?" J
: ~5 C, ]: N# g- h9 \: V {>> values(A)- M- `6 z: w- M
! ]3 l+ @: ^2 @$ z- ?9 o
ans =. K( b& ?+ l$ f% b
) n$ d( y# e# ~
1×2 cell 数组% z. j8 L0 i% @
' a; k. K, ^# S3 F! o {
% m v) g/ ~- E [95]} {! E G: o0 @# f
[85]}$ T' D! C: B+ P, s! V
3 l& _6 ]* h' O+ |" R, w [>>
; y9 z. W, z# Y! v' p
6 \4 M p0 ]& E: z/ Q: D$ B X
+ Z" j0 A: T8 G o) t3 _% |- 为map对象添加一个元素
9 r4 w, u; h* V+ E% l' H2 `, a9 H ' Q( B" f4 M" S" v: I
existingMapObj(newkeyname)=newvalue! S7 Q+ K% |; D
5 V) ~1 _+ U( Y5 X. v
! S$ q& X0 T. G, [>> A('D')=88
$ t. |' g$ a: X! Z* {6 d0 h. e* m+ K3 {4 G# u' l$ c
A = A5 d& b( |# p) s: Y
$ V. ~0 h0 @, V" W Map - 属性:. i7 U T* k* N7 {6 [
7 H* M' ] M( w Count: 30 s' }, W: E/ T, n
KeyType: char
$ E; p' f. W, {5 Y6 F K/ C ValueType: double
. g" m2 V3 q1 `; n6 y
" k' g- e! A3 N( ]2 M5 T>> keys(A)6 o; b1 [" @3 p0 N
* y. N+ c3 e1 E4 H; wans =* m( x' Z9 |0 _. F$ j5 v
6 t# _ f4 Q: |% h/ T/ e. ^
1×3 cell 数组/ C1 z" Z6 `/ I' |# f4 r1 g6 B
" P. ]0 ]! U, i8 d {' L9 q% o! p8 Y! [
'A'} {
& z9 b8 m+ W% U/ r) L% X 'B'} {
3 r+ n5 ]8 a3 u. O" V" |/ U, A 'D'}
* @ a9 F8 U' `9 T5 r$ B
5 G% C3 h! A/ M2 K/ H$ A1 q>> values(A)
6 D8 ?: W- `; {3 l0 l* d8 f- q& R t" _2 I9 P$ A ?
ans =* F- L) c+ h& }. J3 h
# v9 S4 }0 W, G3 M2 M; r' [7 g, S
1×3 cell 数组
7 d7 g: k1 n/ I+ v+ S& e7 e
c! h8 V" J( l( h- b8 D7 d& @" M0 R {! r$ U% {+ U# \! |6 q
[95]} {
5 ?: o' n7 O% w" ~: Z+ v [85]} {6 R X8 ] M8 A. L3 I" e
[88]}+ d6 Z* u, h& X7 A
( O9 H! g, [. W' ~5 U. _>>& K. i+ t. }) B" e9 F2 D
7 O/ \ E$ x% P i# j) W% Q8 Z8 C7 d% F
7 r5 h8 U/ T. q, _
无法直接对keys进行修改,应当先删除要修改的key/values对,然后重新添加一个新的正确的。% Z5 l+ T, ?0 ^. b& b
$ h. y7 o- K7 J$ H( p1 `# B+ P- 修改values/ c/ R( ]" q1 D# Z
- U9 k) S/ z2 V/ Q* V直接进行赋值操作即可
; i4 S- i2 b( [# c0 _# l! |$ `1 b3 D6 `( u5 W
>> A('D')=100% |# c- g7 L2 E: V: @6 {# s
# j% t( p: H, A1 [- {A =
: P$ `* H _7 q" }; {3 x' q3 a0 r- \- E5 ~
Map - 属性:) V3 k/ n) O6 f9 j1 B) B
3 e( I" L* Q3 z( H+ ` Count: 3
+ r( y8 G! l$ c3 ~& Q* J KeyType: char
( N7 E4 _& ^( f7 C8 ^ ValueType: double4 b$ `( s& `8 Q) M' h" B
" d8 ^- y1 n- W- ?$ ^9 y( M# s( ]; I>> keys(A)4 g6 O% P) A3 h( `9 P) w$ u9 Q
" l6 r- g% y! s- t5 y
ans =
4 o* u% D# b3 s& a* q! y: x
6 S9 [. j* J5 r; a 1×3 cell 数组: v- ]. o# ^% t+ \# K3 w/ ^
: Y5 `. B; y5 v I {6 L7 a* l3 n- Y7 r0 w
'A'} {
1 y* d: P4 h- v 'B'} {
, R, |$ I: n0 T! g 'D'}
- O. v. p: j! ?* g/ E7 V8 y
# `& N. n; ~& ` T8 H# ~/ X1 t4 S j>> values(A)
2 K2 g7 h- K1 Z& X6 F$ E2 k* y! @/ i1 _ d
ans =5 ^6 G1 R9 d. A
# ~# Y9 N% H& t- [ 1×3 cell 数组! E G- y( ]3 v$ l: ^
- j! ]' X; x! ~& t7 y- V! x
{* ~7 N* R; N3 [2 m( b0 G
[95]} {9 d2 g5 S2 c) g8 ?+ U' |2 S( `; O
[85]} {+ V$ W d1 Y, |; u
[100]}$ x& M: ~. ?7 h; w! _, ?; W q+ D
3 M2 p& `- a+ M- F>>
8 K" P! a! D7 k# m, K+ D+ W1 Z& _ |
|