|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
7 k: V7 O7 F$ d4 B K# Y9 k1 B, E1. map容器类型以及map类概述
3 K, @% E3 C9 x4 w# q6 e' z+ W' O2 G) O' p2 r/ e
map是将一个量映射到另一个量上,此是前面的量就是map的键(key),后面的量就是map的数据(value)。map的键和对应的数据都储存在map中。一个map条目包括唯一的键和对应的数据。map容器可以理解为一种快速查找数据结构的键。
" G; W z% E9 ], O
* `- j9 W+ M7 Q4 {9 q- F2 r可以当作map的键的数据类型:
$ D8 S3 Q2 f: q1 x v7 W
# k0 i: C8 }! N$ X. x4 j. _4 e- 1 X N字符串
- 单精度或双精度实数标量
- 有符号或无符号标量
7 S5 ]8 c1 S4 B; A, t1 p. K$ R ) p" |) Y; s3 M* d2 U) m4 `# m
+ P- t2 `3 t- C5 r* J- l+ @) _0 W
map类的三个属性:2 W! _! U9 A, `) `2 n4 u) g
- v% ~6 q1 |. c, o0 d! N0 b
| 属性 | 说明 | 默认值 | Count | 无符号64位整数,表示map对象中存储的key/value对的总数 | 0 | КеyТype | 字符串,表示map对象中包括的key的类型 | char | ValueType | 字符串,表示map对象中包括的数据类型 | any |
6 W& |* J5 j$ L! ?+ _. q+ \4 b6 ^+ \9 T! K1 }
- y' ]4 U; s& P0 O& o" s2 k- |map属性的查看方法:& w4 V' j- m3 ^4 [# H
# ^" j2 |, m$ S k& c4 u. v
map名+小数点“.”+map的属性名% E7 J2 F2 m; j( x9 G3 X
0 i- i4 I9 s2 ^3 l: c' r例如:
" _: C2 g0 V" o- [4 e& l( c" o: a7 V2 @! |0 p/ S% L k: a/ i5 t
mapW.ValueType
3 Y" t+ P D" h' N+ ]& `' j: x. @. f1 J2 s
2. 创建map对象
, {* ?6 L/ G7 ]
" b. `& Q& E; `5 k; X Y- l+ j创建方法:
& v! Z1 o/ N$ e# j9 m$ t) t
2 b$ F2 x# ~9 }+ `* {" o. q6 VmapObj=containers.Map({+ H& w( a% ?2 u# D
key1,key2,...},{( i1 |$ c5 p: q4 P
val1,val2,...})* @7 K: \) j! h1 C3 {0 g
% 若键和值为字符串时
4 e* n% F) u% i7 BmapObj=containers.Map({1 W/ V, k8 J" K# K) y5 n' U
'key1','key2',...},{6 `: w8 {$ G4 X) K" }7 r4 s* h
'val1','val2',...})# Z/ j# R, V( A% {
, N" A% |7 ~& _: i5 A
! y; j8 F9 }: }; F9 N0 u样例:6 I" {& N5 _. Q8 g' I1 m
- A p7 e/ r, J. H' C>> A=containers.Map({, Q: A, X) U" \$ T4 u" E2 y
'A','B','C'},{' X3 S" a' ]: }2 V
95,85,75})) t$ p) H" t2 f* z! l) \. b
) C; u6 v! ^4 d( g- W
A =
6 p' P% V$ O1 k" R. O
; |8 h( @0 b {9 h1 k( e Map - 属性:
: R7 l2 p1 H% G4 D" m* }( x7 n* }0 \# | Y! A
Count: 3
5 s- x' B4 O/ F( v KeyType: char% I |5 @9 w4 c2 p. Y
ValueType: double
3 x0 P5 d. E, @" Q
& u' b5 Q- h v' C9 s>>
: y4 P1 T Q# Q, k" Q% I' \: b+ g- P" I, G
/ n8 U& c8 m# c# O* X* }
其他方法:先创建一个空的map对象,然后使用keys和values方法对其内容及进行补充。6 t: ~8 x0 ], K" t% @
! |; d3 W( {6 P- t5 i/ p8 K
newmap=containers.Map() % 创建一个空的map对象; h7 c% [7 B; X* ?4 |$ v3 ^; h
3 H0 a7 K$ {9 [/ [/ e% c
+ y$ h' X/ b9 O( J. U- B
' ^- ~! C- z8 u2 @2 e
- Q6 m0 l! ^# U3. 查看/读取map对象! v- h7 O/ h) D+ U8 h' W
% S4 F O& F$ ^) y; }( d
- 查看命令$ ^! [1 t% I1 ?9 ?! w+ g: n
/ v/ u( Z9 t9 l' E/ _: b- }! Y
keys(mapObj) ' j$ e5 }+ A" J0 M3 {0 @" _) a2 N
values(mapObj)1 o0 u! W+ b4 V; P: {% E
$ q: v6 l3 d- v2 R/ c& J+ O; P
8 q8 {& H4 t1 o4 N; K样例:
0 o4 z- }. {0 b: Q3 n# H& W( g0 p t
>> keys(A)
L2 u. @% F) I- J( }% @* } b& m3 E5 ^, s8 j0 U& ?
ans =
0 b6 I; ~! l1 q; t3 T6 T6 h- c B* @- P7 P
1×3 cell 数组
" R! p$ j0 ?3 M. ?' r/ p! g- N/ P) r8 ^% S9 S! o
{
* b5 ?0 k$ t" L7 L 'A'} {% }* g' n* f0 N7 v& c" _
'B'} {% j( X5 Y* P1 S
'C'}
/ ]# N( r3 A8 p9 {3 O4 z0 ~: q# ~9 b/ K
>> values(A)6 k! @& H, e5 }% d: M5 g
) F& W% h, k& `2 m" [: Z
ans =$ W Y; ]# ?0 F; Q$ n- j8 E! l
! f7 T* ^; ]$ B# ~5 ~
1×3 cell 数组
) C) G4 b) v: C! n! s: B7 w% Y( ?; W6 n, g% e0 {8 x8 Z
{' u* O I: y! Y* P
[95]} {
& q2 l3 \5 A; G3 L, L [85]} {# o7 X0 O {1 N5 L/ M4 u
[75]}1 O5 A/ T* V; {
$ K c% Q' m2 J6 b
>>2 @0 y z% X* G- b
9 m) B/ w( s+ F! H( D
9 K) f- ?0 r$ c8 v' }- 读取map对象3 v5 ~, w7 z; F1 |/ {
5 j9 L- \1 H0 R* Q& \7 F" \4 L知道map的键读取对应的值( W9 _7 W. X$ J8 J
2 [% d# g3 B. f x4 t8 G( I8 UvalueName=mapName(keyName)
! C9 c. D H% \% \. t# y# _9 {: a' u% F
0 ]1 l" v' W8 ?- D& v1 B! s* T2 J% x$ R. H
样例:
# Z1 J# p# N+ W$ g) \8 ~
. ? ^5 m) Z8 U" t; P: F/ z>> c=A('B') % 读取一个值9 P2 |3 J1 T$ l! b' e) i& e) F
3 w7 K$ c! U* S+ F+ mc =
4 o' _; |& J5 j% |/ X _
' {& `+ V0 w( ]+ Y6 c1 s0 d 85. x' C( p8 X0 {: N
/ v. k& c8 q; p" g4 D! V7 ~" ~+ R6 N
>>
6 H0 Y0 `4 _3 \; b
$ `2 y, `9 L! K% P: H& f6 j% k" \7 `+ E$ Q3 f
知道多个键值读取方法:使用函数values& n, Z4 _# M: b8 E% B3 z3 l
9 @0 z5 q( W, Q; jvalues(mapObj,{
7 \1 m) h; Y+ ~& J: H! ~5 l4 ^# `5 ] 'keyi','keyj',...})
5 P; J! @! @, N0 W2 g; p
0 Z) x& e" ?3 `5 } e9 a4 l6 N3 J r' v( O
样例: A$ R* H, F3 k2 \& s. k% Q
- K! Y! {) p: F. Z1 z; T D
>> d=values(A,{
: T2 ^. X4 |4 W+ W- E 'A','C'})# h+ z7 _4 ~* K" {' J
: v- b% A& X) }" e$ D0 f' Z
d =, k* C' W/ D# y8 u8 d+ z" [
8 c. Y* S9 w. T+ W. a2 e 1×2 cell 数组9 ^0 D/ R4 ^1 z8 B m) B/ j
. B+ q$ }7 g- A# [7 g+ c9 ~
{
: f- W2 A* i) V) A7 E [95]} {
$ Z8 m4 v) o h4 f' G0 p [75]}
1 c6 s r4 e" h6 `
, s( Q- Y6 e4 g) U, Q& N' ^0 X' P>>& y& |, ~: [) i7 }+ Y/ t
) h2 V) U4 R& H4 R3 f, c- ]
; f% R% B3 Z8 H
4. 编辑map对象
6 |3 i& `& y& A5 F1 u" w7 O4 K, T2 U
- 删除map对象中的key/values对:使用remove函数。
; A3 d7 {6 n' M9 S, @
: V! i7 N6 t" o: g( aremove('mapname','keyname')& H& I5 W# z& q: D ?! c& B2 x
* }' ^6 o9 s R+ i% X/ z
>> remove(A,'C')
& K1 A$ d' M( ~; I* E2 X
2 R! O; m4 L' U# G8 o2 l6 Ians = 6 r6 o# U" [! R! c
% P7 s) m, g- q4 d; s! h* w: x Map - 属性:
/ j5 |, x- U' D5 [* k# l Z9 n' J' b
Count: 25 w4 [+ O+ N9 X+ u& @
KeyType: char/ d5 w+ `, j/ a
ValueType: double5 e% ]1 i9 z$ z; x' V; O& T2 {
2 o! h1 Y. n, [>> keys(A)
4 J9 h! t5 U0 Z; N8 b! C+ M
( G1 M& Z: Y# y! L& I1 P6 K9 A3 rans =
. v% ~) c4 l! G2 Q8 I1 ]# s& e
" `- S* v6 l8 V4 N; _ 1×2 cell 数组
4 M: [( g1 ?- y8 L; g
( o: }! g2 \8 L5 x4 W {
+ F( r1 b# j3 @$ h 'A'} {
/ { e2 d0 {) l# C( ^9 y 'B'}7 w2 e! q$ f( h& O
3 P7 p2 ]# `2 M. _; N8 |" W \
>> values(A)
9 o/ c! s+ O9 x0 o1 ]6 y# E
2 L5 @% s# i) }; F; I+ I' @& Gans =
: f8 L) m5 d0 G7 \! d2 m- S/ P/ J- ^8 Q/ d$ z& u6 E6 g8 I, R
1×2 cell 数组
4 G% P3 l1 T8 c9 |! g' X, y, o% h) W4 t" b
{
% S/ F1 A9 T0 m# {, t* x [95]} {
* }2 t0 w3 f5 f; w' a9 R [85]}* O' z3 L1 D# W. J# L# e
1 P5 H0 s% m& ^. |' \5 b>>9 S1 \3 _3 T" t$ U' }
9 C) S# J" i A5 a& o9 _0 _9 P
& |# X6 d. Q' J0 h" V- 为map对象添加一个元素/ p$ e1 [8 w' p0 Z
; c# O" w3 Z( J% {/ NexistingMapObj(newkeyname)=newvalue- F: P( l/ o5 p9 Q, D
* C6 ^1 n* V. V3 S5 x, W2 @
3 @! L7 z" m8 k; P. a* y$ h>> A('D')=88" k9 |' n: ]- }" e" d" t
3 P$ Q/ d# B; x! _& H* ~
A =
7 `% M5 X5 k+ Z! A3 |4 ~( V+ w& H* N0 w0 [5 |
Map - 属性:5 }+ X: M$ u) D1 m
/ }5 ]5 l/ T+ m6 k; I: D' x2 } Count: 3
; N) Q3 P2 t& l, k5 G7 c KeyType: char
4 E4 p+ z$ X1 `; h3 ] ValueType: double
& r# ?1 l# j7 z' V- p6 s$ k& B- ]& @& [) s. }% x2 |+ g
>> keys(A)( \. W- |2 K- ? Z: w
' ` m: R% j$ k1 @# Q5 S/ Q
ans =1 S! z* e2 B) u$ v3 [8 Z! l0 L
& Z1 B* ~ Y$ S8 V' l
1×3 cell 数组
% L8 W# F$ Z" T- k- B+ v) O) L9 J2 Y" H1 y. T M' ?, k' _
{
% \" x( d$ h4 L+ y1 M/ \- v 'A'} {
1 O( { ]' y d 'B'} {( o# g. z. E6 ?' t) h0 _
'D'}$ {9 y- J! X6 h/ J3 f; u
6 ], C! u2 U: l* @+ \>> values(A)
$ U7 V0 s5 q& u7 A0 h& {$ |6 O6 Y L2 x; z8 B
ans =
( q' |$ W6 w: A$ {" A6 P" H: n( H: H0 v/ K3 s1 w
1×3 cell 数组
7 K/ K; X* [* F! t9 O" V
9 s3 i" p1 W9 K {/ s9 X; ]% `0 P( A R: n
[95]} {
# F# h( C2 B! p. p0 ]0 i: `+ J [85]} {! e$ N6 j5 F1 X! P' O
[88]}
: S# H; A2 g% _
2 q! a l$ N; G- I: u0 c$ i4 O3 O2 E>>
g; [0 t+ L- V& V7 l
$ d' |4 t, ^- Y; v- P8 f- r: s" h. b/ _; E! @4 `1 r' v
- 修改keys
! F+ V, {0 ~$ E& u" t9 H 7 [4 e. b& f9 G
无法直接对keys进行修改,应当先删除要修改的key/values对,然后重新添加一个新的正确的。
8 T$ G0 s9 H' H9 S( r" Z1 Q
% X4 L6 m$ G( ?; z1 A- 修改values0 Q; C& o' P8 g) t" F
, {/ r7 H- R2 @# V
直接进行赋值操作即可
- @- w$ `3 C6 K3 x! B0 w1 t+ d7 [& M6 C5 \. L' E
>> A('D')=1009 k7 n O, P% F8 ^3 i9 G
7 K$ t0 F6 \) ]A = 3 p! t8 Q. _' ~: m* Q6 r4 x
( d l5 x& b, F' b Map - 属性:/ }6 N7 r! F6 a( D* P5 O6 Z; ^
: @% S- D7 d Z, T' u9 P
Count: 3
% z- t7 D- u+ l6 F* r9 ~$ R KeyType: char
+ V3 J3 m- _1 j+ m! A8 Q ValueType: double
* q4 n- K5 z8 s* Q3 N( ]9 U& U0 z; Z! J. O# `7 z) K
>> keys(A)8 c) I6 ]2 ]' {- v% }/ c J
7 V3 G$ E; _4 P5 N, S p" lans =
- s5 h" T8 g0 l/ b1 `- e
% H: [! K9 x9 T9 K 1×3 cell 数组
0 j# O: A4 J _' y* q0 @ v% @' I# A7 }6 R7 ^
{% y; `9 F! n* m# T+ B0 b
'A'} {) l! m6 p$ Q3 p$ T6 M+ \) D4 }
'B'} {
# N# k7 @( Q. @5 R- Z C1 _ 'D'}
* V: h- Y7 k7 X' \& a7 {9 ]
; C. P$ @- t+ D/ @. P7 U5 v- V+ n>> values(A)+ `& D/ |' _" P# L6 A8 O( b: Q5 H
3 Y) B) X! _' n' Y
ans =
9 Z& }7 [. y7 V* z0 y8 F; C
# W& E/ s* a3 o/ \ 1×3 cell 数组
" V( T0 |5 W* ^1 L' H; N L5 [: R6 Q4 _/ |" |# f
{: n- a! ]- N, h! R9 l
[95]} {
- j, y+ R1 I- b1 ` [85]} {/ }% ?. o8 a- |- C6 O6 y
[100]}
1 U3 W$ x$ `+ b8 s1 C
9 l- Y2 C% W; v( s' p s>>
, j; `4 _ n- h |
|