|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
. z7 E' L9 X3 N: A1 _1. map容器类型以及map类概述
+ y# d9 L! D- H6 J$ _1 z) \7 ^ ^; `! R( h. U, d9 Z* y: }8 _
map是将一个量映射到另一个量上,此是前面的量就是map的键(key),后面的量就是map的数据(value)。map的键和对应的数据都储存在map中。一个map条目包括唯一的键和对应的数据。map容器可以理解为一种快速查找数据结构的键。
' n- y3 Z; a5 y: ~* O% I0 M& T8 H8 R2 V) A$ n9 w9 ?9 q+ C
可以当作map的键的数据类型:, V3 v7 g+ a* N8 U+ z4 w" z7 C5 e
5 S8 f- L- v% l( m- h4 y- Z) l- 1 X N字符串
- 单精度或双精度实数标量
- 有符号或无符号标量& j! P+ C% c' a( w3 h9 y0 a# s! l
3 W, f) I @) Z' Z; D0 s( m3 W# T
9 g$ s, {0 Z( A* s1 X3 b+ p4 S
map类的三个属性:( i' J% @5 @$ ]
% j4 h4 _/ v/ O5 c
属性 | 说明 | 默认值 | Count | 无符号64位整数,表示map对象中存储的key/value对的总数 | 0 | КеyТype | 字符串,表示map对象中包括的key的类型 | char | ValueType | 字符串,表示map对象中包括的数据类型 | any |
- c" s [% M8 b& P Z1 Y3 W/ y! R: P: I
5 B: I1 H4 G3 |/ {
map属性的查看方法:
! Q1 S1 B( I! G% I* M$ s
* X" L. G% d/ S' F+ R0 ?, \3 f3 ymap名+小数点“.”+map的属性名1 {1 }- Q! V( L
1 d" P7 ~' {% e2 r" G例如:
* W8 Q3 p7 R1 g* D0 l' L1 ~3 e- R- A: ^
mapW.ValueType& i. M ?. b( f& o; F, D q
6 i* \7 R* K- }* |/ D2 [
2. 创建map对象
$ _# c8 \$ \( J* F( j8 L5 x- ~& `1 G% H: V5 E0 g% Y t! \. E3 s
创建方法:3 J1 R* \6 |) {/ H+ [0 A6 o# ~
/ ?+ ]3 i K6 ^3 f
mapObj=containers.Map({8 h* {% |- Q' t
key1,key2,...},{' X; E, Y0 T8 ?# Y9 W8 i0 C
val1,val2,...})9 v9 H7 m7 K( j( o
% 若键和值为字符串时1 s0 H9 B6 y5 Y" L/ F
mapObj=containers.Map({
) r$ x; k, H* X, ~+ C* J; i/ P 'key1','key2',...},{' h5 F( ^( H; E8 {
'val1','val2',...})
4 n& h: ]6 M0 P. ^1 h0 a" s9 \
( M4 T& z9 H- ~% I5 }" n7 k8 t. P1 `3 g+ R, d4 F' a/ i! T
样例:
* b# D/ F4 y1 f+ i# k; |. \* c
1 @( a2 B/ M/ a' H! p7 A. w5 y>> A=containers.Map({6 `' j- f& O' p. q8 b! S* P
'A','B','C'},{
: Z$ _ a2 X: s1 Z* A# Z 95,85,75})
/ v2 y# d2 g2 Q0 J+ K! N/ ~1 t- |* J/ Y: X3 N
A =
$ Y) Y. a( _" u& j6 X) C
5 t' n i* M j7 r! M Map - 属性:
. ]% q' H4 {; V' R1 X6 n0 P$ b* y# |
Count: 3" c% U E$ o( {5 C$ F+ R
KeyType: char
+ s1 h2 [( Y* K0 o7 H6 F/ T& \ ValueType: double% n7 P* O- I3 h
) J7 m( v9 ]2 L9 ]. Q! S$ X, [
>>
1 R% l/ v5 |4 |# H
. [! \9 K/ m7 U
# u- y# }2 y" p# w7 G- R其他方法:先创建一个空的map对象,然后使用keys和values方法对其内容及进行补充。4 W, A" q* r" `/ N3 z" _! G, v8 \
: X2 N- }( ^; i+ G$ B# onewmap=containers.Map() % 创建一个空的map对象9 s( `1 _5 `4 |" p* [
2 V7 Z) y5 K+ a! b7 d1 R, b( l( W. ?7 _# t8 U* y$ r6 N
7 P0 X3 P2 n U9 n1 X
! j( V+ I; D$ M# M, ]8 I( W3. 查看/读取map对象' C- @" W, }1 n3 G5 X' W
9 n) A& k9 \9 a- a- 查看命令8 O/ f# M4 x6 M1 g) ~5 k
: `! e. l) }+ G2 v! Y b0 e" y
keys(mapObj) & J4 z5 p$ f' l1 G
values(mapObj) G& {1 ~$ T8 q u
0 b& [. H) a/ M1 c4 }- d" y6 A
/ X8 W. M& M. G9 [: L# o t样例:
6 U% }5 j9 O# v% c4 I, W8 N; V' Y4 m; O8 D( E1 L% K" H
>> keys(A)
& d' P0 ?$ S5 G" j- O! _/ q& m# [2 i. F! G, ~2 M
ans =% {. B# X' U1 y6 j$ w _& j
% C6 s) b. k0 b( W2 Y
1×3 cell 数组: n7 W; X7 b+ c& T" }) j' ]; w6 n. `
# h. Q1 z8 s2 K. }; X
{
7 _9 f& q" N' T, z 'A'} {2 Z2 J I$ R. }+ t
'B'} {! u4 f7 i! P# ?, y5 l' {! Q: T
'C'}4 r; z& v6 p( O7 e0 r' v! F% b
2 n, v3 y2 p4 O& }2 i H>> values(A)8 x4 U2 ^4 n8 F: ~
7 D' U _# d% J) mans =
6 f( L6 \9 U& j z, X( m% J7 {0 N m9 L; \4 b) Y+ A
1×3 cell 数组3 M4 s, l v' l! y% o
! d7 Y5 ]- J3 g* ` {
! _ E' S; j: H, w3 {# \ [95]} {( W, _& {% K3 B i9 a0 l3 s$ t
[85]} {
9 L, w% [% k4 `# M [75]}: I; S, a8 d3 w2 S
" y2 h% t8 V6 \) [8 x) k' c! b* S
>>
* Y8 I) G. h. X; e% w! C8 n5 l7 Z4 W y6 C
1 R5 V/ z) l* Y: ~2 d
- 读取map对象+ m, K/ y. r* I" O) D$ e5 r; k
2 n8 }1 U" c* H& |' g; a! o7 N' ^
知道map的键读取对应的值9 X* U6 o; ?' Q- Y# N" x* R- `! G
# g6 s. R* L$ x3 m" J i6 t
valueName=mapName(keyName)9 j* X; k+ d* R3 n) `
* P) Q( N4 h/ }+ k0 d+ Y% p; V
; }- A _! T0 G# J2 e9 I# r- ^; a
样例:
% l3 _2 l" p0 ^& r# j& S
+ Q4 G( l1 V. i+ ~7 X0 J! Q>> c=A('B') % 读取一个值
, w3 I6 f. V) r% \! C
' f7 z/ u% \" L7 Y; g1 E9 H) j3 c# Z9 {c =; i8 e' x1 t/ t
3 c9 ~' o; C9 L0 n1 P! K# z 855 p' F4 H2 J% R P
: e/ Z1 V( U! {5 W9 z>>3 y3 P" I6 A5 E& c5 ?4 k, [
; F+ C- a3 d( [- }; c u' d
/ u5 u x" f' V+ N' ]2 k知道多个键值读取方法:使用函数values! Z+ I( {& k, O1 [- o2 M
- e/ p% B- I0 i4 s$ X/ f9 [( j9 \
values(mapObj,{& I3 }4 q/ d `4 b2 s9 p H
'keyi','keyj',...})
3 @$ H. H$ W! \& {
8 M+ g9 o( I5 s
( C! M0 ]6 `5 w K# a4 @+ W1 I样例:
& s+ a4 C N N6 j N7 k6 m% L# t; B) _# e5 R7 d
>> d=values(A,{
! t# q: N$ `. o, c 'A','C'})
4 g3 r9 d# l$ Y/ v3 j1 i) D9 k/ g+ q1 X2 F! r% _" w# H
d =3 u$ y, L- {/ m4 v. ]$ k1 @) }
6 K8 D: ]9 g4 z' l# M 1×2 cell 数组0 _7 Y a+ O2 {. |, j( P, y
# \) [, L! ~* m3 W" k5 P- K
{
- X! Z5 D0 j- a1 @/ y) C$ B0 b% r [95]} {6 S& k' H3 b9 X( o6 d1 L4 l8 D. L
[75]}
# i$ V3 Q0 k% h y% o, @2 [. v: R; D$ j. ?
>>8 V0 f/ f' }& l
! K% }) R& A$ T* G+ M2 T+ ]& y2 I( J( ], b! }: H
4. 编辑map对象6 A" L5 z) B! L" z6 o
6 h2 c# {- a# o. @! T- z5 R ]- 删除map对象中的key/values对:使用remove函数。
- _7 u( G- C+ T. C+ b7 d
+ O5 ?4 j; D/ j! T: e2 G) Vremove('mapname','keyname')
9 W* u6 O* ~8 \7 ^8 j z
4 b) e/ s7 Y7 c: A1 K m: {0 M>> remove(A,'C')
5 p8 I' C# j3 n5 n3 H6 L3 U0 M. ~; o& S' c5 j4 R
ans = 5 ^. R& w3 I- D% r: x1 w* w
1 X4 K6 k0 k7 e' Y9 s
Map - 属性:1 h8 A# }" X" U- u: t1 U7 r
3 T% J! H* ?, T o Count: 2- w+ T7 B3 z& p9 T$ g
KeyType: char& O* H! |1 T& }- ^4 u9 P |
ValueType: double
, [- B2 t0 _* K \6 q" C, ]( v1 i4 u+ D! X$ }! Y( L ?
>> keys(A)! L6 g4 @/ ?) J9 m
0 m0 f/ ]+ T, c" o" r8 B* [( }ans =9 \2 X! H4 N5 x7 i' U1 |# ]' \" p
! ?0 D8 d+ [, l0 I 1×2 cell 数组
~7 ^- v& o1 E% U) E
! m# K% I! w/ g( }9 \* X; C$ V7 q5 z {- s6 V3 j4 K% a+ B* N
'A'} {9 ], h) @4 ^; u1 E, k
'B'}4 w: I! m9 ]$ O K: v) c( i
9 ~1 ?4 N4 B# @
>> values(A): {, w, s; e! {+ U% e
# T' b) O5 y) U3 K, _% T/ K- J/ s4 uans =
7 r1 _" D% X( }7 Q2 K. n2 c H" q, a4 n2 q
1×2 cell 数组
- c. @! c' ^) w: ]8 U4 G/ N3 S3 _) V" v6 J
{
4 m- u3 ^1 I- _& p# o( T [95]} {
' b j5 ^! ?6 I( ` [85]}
0 l& n7 a( ]$ Y1 c5 T
. d# |2 k1 @/ a4 I5 [>>" r! r8 ^% A0 t! G, H6 W
9 \6 \* b4 F: X- `8 ~' X
# \3 F9 g% e" X4 X1 D& @/ m- 为map对象添加一个元素
5 K0 b. l: P9 h0 Y8 E) y2 u 3 r$ {1 Q; K; V
existingMapObj(newkeyname)=newvalue5 B8 E% Y9 _6 @9 i3 V
: S: z' X1 e, _4 W* L* P
% t' l! S1 `/ E' t, e% B: B; k, c>> A('D')=88
3 ` T0 t1 Y/ K+ A# ?5 O, q- z2 A( e
A =
/ O( I+ m7 W* Q- t# i7 q% y8 u; W' q8 x0 ]
Map - 属性:
3 W* Q* O p$ ]3 t+ r' V* @1 q' _
6 t" `" |/ n, ], i8 e' w Count: 3
" ^4 D8 F* ~ `8 | KeyType: char! g0 R r |5 P0 b
ValueType: double
+ l; m0 z# K H0 [, f/ A, b4 z+ h; E5 X; D0 B+ L
>> keys(A)$ I) A! [) U( j- Z% e
9 b M9 r. ]/ e) P) q
ans =6 ]! n0 ?( `$ [& s' Z$ ]
5 m4 [ T6 J3 a0 s7 H 1×3 cell 数组
9 n* {1 J: a# S" x0 h" l8 M) [, U2 b% A& u% ?
{
$ j/ I" z! q) [+ g 'A'} {" t8 q5 d4 t+ L7 }0 p
'B'} {) ^) P% V5 g" o' W7 c/ n
'D'}
, ^: R5 f& N9 }# a$ N
/ e: r/ Q3 d- Q2 u>> values(A)9 U7 C7 I* C' c; y: Y
/ b# V5 [2 [! L# T/ @
ans =
8 o" l# Z& U7 K5 e2 b
- V4 o( I7 Y. z: Z) n* c 1×3 cell 数组1 h9 ]- ]7 L0 n# b
% {; k! n8 _7 d2 v {
, N# T& d$ x; R! i. k0 D. G [95]} {
' t5 ]) I, w0 e* |- p6 }: o% a [85]} {6 V6 J: g! t' h$ D, c0 g. f6 Q* i' ]
[88]}
) b$ s& A( b. E+ c
. i; A# W6 p" `/ Y+ Q>>0 C ?9 O/ I5 N
% F7 } T" r- I
& F- @: u" q: X0 W- 修改keys% u0 ^! T* V: e# a# P
' p9 z& O+ g/ W. n% `* ^无法直接对keys进行修改,应当先删除要修改的key/values对,然后重新添加一个新的正确的。
; L+ |0 U+ m8 X. n; B. }; d
" g# v: [6 A% u8 e4 _* J3 q2 j- 修改values! \; b' M8 G, {% f1 G
2 i% X+ p9 H. Y2 y0 | I直接进行赋值操作即可
3 G1 j1 S( K$ G8 i; a7 @* l# S! r& L: Z2 R) a) G9 O: W$ j4 {
>> A('D')=100
: w1 V( I5 B- M0 {7 V o2 n
4 @$ i; y8 Y" v7 O9 A9 s% ZA = % M8 O; e% V7 N) |4 w; e
: m; q* J' y. l: y) y! p/ l) N
Map - 属性:+ Z& F$ ]4 K3 n k* C4 K0 G
0 R5 ]" K3 t- `4 p4 Z5 ~6 P
Count: 3# m: B0 y$ w5 f- m& `
KeyType: char
- h, J% T0 l0 `6 S) m- V$ T ValueType: double% S! K2 {( U9 v& M! ~! G' B
g% D/ L% L/ F- X>> keys(A)+ t1 \ l0 s/ A( ]" c
' j0 f+ i: k e! K, Aans =/ I+ v. X$ o6 B. m; t
1 ?: W" J( i+ n$ U U 1×3 cell 数组" G( p; n. z3 {4 ^: p# o6 ~: B! p
% [* O5 b& _5 P/ j V* I" b
{8 ]7 g6 E, ~+ h/ X' O% @
'A'} {2 w- f5 `2 |) M
'B'} {
3 A$ W1 {' e4 h: h J' K; V 'D'}
0 m% D5 m5 V d
9 D. h) t: @5 _" @>> values(A)+ `8 W) d- r3 B r6 D1 u& x
; V( _) ~. Y0 @5 w2 k
ans =! S* ]. |. z" h1 E8 d l/ g$ @5 w
! W8 s" Y, ?$ ]5 ?. Q2 R3 l 1×3 cell 数组
P6 k/ [, l; f, d' f& P6 D3 M0 }7 F
{" A" o& N( n. `. Y
[95]} {4 c- F4 G# ]; g( J7 j. ~
[85]} {
7 [0 J" B( I! q2 O6 ~2 t# o! F' D [100]}/ s: i. @ b- N
- C7 F6 N: |; E>>
2 c: M Q$ t5 Y$ X+ N |
|