|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
/ y+ |3 v: ?. n1. map容器类型以及map类概述 v( F- ^( M2 }
3 i1 O& U. ]& V! o3 V; b) \0 \
map是将一个量映射到另一个量上,此是前面的量就是map的键(key),后面的量就是map的数据(value)。map的键和对应的数据都储存在map中。一个map条目包括唯一的键和对应的数据。map容器可以理解为一种快速查找数据结构的键。
8 w: i( B( D" R6 w4 W) V1 T# P* c- f6 T) z# _1 Q
可以当作map的键的数据类型:: H1 f* m: k/ O' @
8 p' E! R# _9 B* N2 ^2 ]
- 1 X N字符串
- 单精度或双精度实数标量
- 有符号或无符号标量
3 x" M* O2 n; r/ ?4 U) \
% ^3 J7 ~4 |& D8 @
. Q* V& R! A$ a" Z% L+ N) Fmap类的三个属性:/ q" I: S5 g6 X9 F* i9 f# u9 X3 d" P
/ Y' \5 m$ u, s$ Q
| 属性 | 说明 | 默认值 | Count | 无符号64位整数,表示map对象中存储的key/value对的总数 | 0 | КеyТype | 字符串,表示map对象中包括的key的类型 | char | ValueType | 字符串,表示map对象中包括的数据类型 | any |
% c! _, V7 `. a- | t+ n
; s$ C- C9 B6 t7 |: h7 M# g; z8 T/ f
( s$ l$ ~; L7 R, fmap属性的查看方法:
4 y3 S6 g8 U# v: p% x, `+ ]4 ~) G% p1 o5 A! ]$ d; f; j' R
map名+小数点“.”+map的属性名% @+ L/ p) n, v/ Q) ^
2 ]# V% j+ L/ I0 f; g2 g; \
例如:
# |/ x( |/ ] h4 d+ C. ^# F& Q- V6 M5 P( H2 ?
mapW.ValueType
|2 R& w& I9 d; _. _0 m' B; _
' N" m+ x. A, R4 L( l2. 创建map对象
8 d1 `% `, o, ?3 I5 p) _& c( ?
7 [- [% [3 C: N8 B3 B1 v创建方法:; ?2 H- [! m4 n1 `; i: z8 Z
/ _3 _: Z1 u. m/ o& ?mapObj=containers.Map({9 _* r7 A/ L! I0 U+ t
key1,key2,...},{: x% N; o' @/ }* `. T v7 H
val1,val2,...})
2 }7 Z# i3 i' u8 q" ?% 若键和值为字符串时- Y* d7 t. D/ a- ?3 {/ n- v3 ?
mapObj=containers.Map({
9 u" s" V' A4 i( c) i* I+ Y) B( s 'key1','key2',...},{5 a/ j# u) q- x4 n
'val1','val2',...})
2 x1 r4 S2 @) ?1 z) m% t$ d7 u( m1 \" `
: Y) _* b7 y! ?0 S# E1 ?
2 H6 ^2 @' T% c- v; y6 N* B样例:
% D/ u) A! G7 ^% Z5 H, A' x7 c& R3 `+ R3 |" V4 J$ @/ m
>> A=containers.Map({
# q" a& m, C2 f& G+ ~9 l1 r* f 'A','B','C'},{: `, `! e3 h$ M/ I9 ?8 j, W
95,85,75})8 K$ ?: A/ x8 A9 H: _$ m3 r% @4 q5 k
, E: ] i9 _; B+ e2 V" I; T" H+ wA = # S/ w# d- I) R
, @ k3 ^9 j$ W& |7 R5 n6 ~% F Map - 属性:2 D! J w, P/ V4 O
3 e3 f4 {4 D4 |2 m Count: 3
1 L$ K5 [' q3 Y% `, }- z4 Y* i KeyType: char
6 _6 B; p7 P" { ValueType: double9 }0 | H7 O* w: j9 B
2 v" X4 t0 m' B# h) i+ [
>>4 o/ b6 U6 o. R7 Q' O
4 Z( I- D9 K1 F2 d8 n
# \1 y1 H: n1 S q
其他方法:先创建一个空的map对象,然后使用keys和values方法对其内容及进行补充。9 Z w- p+ S% P- R6 `2 l8 e
8 I( c0 f& h' Y$ Q" a
newmap=containers.Map() % 创建一个空的map对象* s. ]. U* }5 f& ?
( b& y- e. ? n! z& k1 q9 d
, w5 h6 K) {0 b. G" f8 @7 F' U
5 y8 S3 Z8 k* h: ?" G: A1 Y
: B% N& q0 s+ D0 A& G+ W. h5 c3. 查看/读取map对象6 e! P, p6 {+ g2 Y0 q: e
/ J$ a$ O7 o1 w2 C- 查看命令2 s. _( r! ]% b6 y3 B
; l. b2 y$ u& e& Y7 Ukeys(mapObj)
- O4 v( {! H2 x; H* s# {# a; rvalues(mapObj)0 u8 g$ q) a% u3 N! R
" I1 D( N1 f4 t. m' Y8 Z
$ j0 v4 k8 s" D1 @9 }1 D* {, W样例:. ]5 _8 c% I7 }( K; P3 I+ N
$ A! A- n) X( X2 r7 x) N4 v! h
>> keys(A)8 x0 ^0 v$ P, I! V2 C
+ Y1 R2 Q4 E& M0 Gans =& b' u/ |; U9 P9 {3 }4 t
2 s8 Y! x7 Z3 O0 e$ @ 1×3 cell 数组+ X, @* _8 _3 F* ?) c2 a
/ _( c5 Z f# k* u6 e# H3 P4 I
{
8 g9 _5 v5 e9 T* S: r; t 'A'} {8 @7 {* d$ [# _7 u' v( |$ A
'B'} {
4 i* }: N( I" ]5 h+ o6 ~3 ]* ] 'C'}- m! U3 E9 _# M0 i* Y J8 Y
/ D8 i# U7 W( L" x, g# J) P
>> values(A)3 q% u5 C* ]1 |
) W0 B% c0 Q8 u1 s4 S- d
ans =
3 P' f$ l% z# A/ w6 [) ~/ ]6 @2 T# f
1×3 cell 数组
0 ^9 P8 Z" a6 @/ G) m
3 {# ^( }/ `: f6 Y& k0 ] {
: G9 Q% ~. V+ Y( |0 X [95]} {
, G0 |) ?8 ]% ^2 m* I [85]} {
0 w6 T7 N8 v9 b [75]}! Y8 ]! T% w& A" i& |
: v" N. c. H+ C# z% d9 I>>
1 i- D0 z( i/ ]& T* m: _$ [- N4 ~
* f" ?* }7 y# C5 C \. E! R2 p; }$ G4 }. s' }; G7 S
- 读取map对象
) z+ K. u/ y: \+ E- V 0 x. |+ K" l6 w0 ?+ h: B3 h
知道map的键读取对应的值8 A/ x) |/ l) d$ s) a
& a8 d1 t9 [5 @* K: K
valueName=mapName(keyName)* d6 W" t8 z% { x: r& R
2 c4 ]3 s& s( y( D$ l( g0 v7 z; d, a) P) W# f$ R
样例:5 c+ P9 C; h! B* x
% Z- O% b2 b, |' {, X7 _: E>> c=A('B') % 读取一个值' Y: L& d! C% g0 J j O- B
7 a: _$ m; e: \1 a9 D# h2 E
c =
R. H: ^9 n7 G/ _2 k: x, X" @. v6 Q0 X, _. z# J
85: ?/ q' K. r C$ z- k1 J8 a! H9 R
0 w% C. r$ r% [0 O! i- G3 c>>( u& C. F \7 U3 L
& I$ U0 W1 [* t0 ?6 t% W }0 b
2 }8 ?/ y4 h$ o0 S7 \8 d知道多个键值读取方法:使用函数values* a* p4 |4 W( i3 s$ Q7 g# p2 r
) A& }6 {# v& h2 w0 i) n
values(mapObj,{
1 C+ }0 v* V1 z! S* j. R% ^! ~ 'keyi','keyj',...})9 X j2 ?$ h4 ^4 d5 C% s
+ X2 ^9 Y& n/ v0 O4 j5 L
" h# g% {4 Z+ p$ e样例:9 k, }" N- N7 X( c2 y: T
4 \. `. t1 x3 T% I2 ]# F>> d=values(A,{9 v0 r! g J, B5 g
'A','C'})
) U: X( _6 `2 g$ K1 z8 Y
+ n+ K5 A2 [+ x/ R4 H+ n$ Yd =
, Q M* [; E" b$ n, v3 P$ |' s/ J8 U4 P {
1×2 cell 数组) x6 C6 E. r6 m8 N/ m; X1 W( \$ N
5 a& M& _0 H7 D7 H! R f+ _0 a' t, Y
{
Z3 W$ O+ h% j [95]} {$ s4 W( Z8 w- d2 w
[75]}0 v! F: ]1 t( r
1 s- \ n6 r; R6 L# C>>
; q/ |% l2 D: } r1 a+ ]/ s) \' u" `4 x& y8 P' H7 \# W: Z+ K
9 @; N4 h& L* m5 \/ W4. 编辑map对象
0 _9 d$ ]' a6 r$ V# @
+ C: I" f1 b( l# o1 @; C: r- 删除map对象中的key/values对:使用remove函数。; V. h: c! A) m, s/ }, z
z# m+ f2 A) C: |& B+ b& r) T; {$ X5 d
remove('mapname','keyname')
x9 y5 a& @# F5 ]' Q# t2 D5 m
+ g1 f# W9 j0 J' v, ]>> remove(A,'C') R' I" o% ~0 J$ a, `
, c0 ~$ J/ U; n
ans = / Z2 {& F. Z" }- k
, [4 _: y8 {$ B0 g" o Map - 属性:* V- e* G/ i& Y! P% F$ R4 @
. j7 e& n# X+ D, |5 Y: S, z5 Q
Count: 2- s- m! V& L) t4 a5 _
KeyType: char
$ S8 n' j' c! E6 x9 d3 M. s4 R ValueType: double
, \4 i* {2 F1 n! o& ?
1 z* u3 P4 w) k. g* H>> keys(A)
' f5 u- b+ ^ T; l% Z; G5 q
" L) [' s' i9 Z, P$ F4 n; }& c0 Wans =* h& |( f8 F0 s* ?! ]7 N
' R! H- N: {# o 1×2 cell 数组
% w4 ~5 s% m" D1 W+ X
( p5 B8 m8 @& l3 a& g: o! ^( [' R {
2 ~( I$ v8 \* r1 J$ g 'A'} {+ l+ x: e3 O. p& N9 O
'B'}
$ @" a3 K1 R. `2 y% D) [( l% A' T6 O/ }; ~3 ~& u; E
>> values(A)
( r: p' ^2 F8 J4 W0 J: m# g' z% L
1 H- x* X' T. ]2 }4 kans = q1 K- ]; @ C U, ?
4 t) z. N0 c( W$ o$ P# l& y 1×2 cell 数组
8 h# J$ o( Z" z# T! e; C3 s3 ` R. p d+ a$ d% n
{- _" A1 d9 f1 d& x& q3 ~6 ]3 V
[95]} {
8 f& x$ J% D7 O" t7 R [85]}" X. h+ n$ r; g% |# r# k
1 g- b5 a! [) r9 Y% {' D>>
3 n9 q/ a! R# }- D8 \- o, A" u! d; F f5 f" }* z3 w x: F
@% _" ~9 V0 y7 ` Z# g' r
- 为map对象添加一个元素
0 U0 W+ j8 I( Z+ i8 ?1 I
) x3 Z4 k, x6 \) q) n, j2 eexistingMapObj(newkeyname)=newvalue d% `5 @2 J- s' T7 U( S
, @& X" [2 C9 t3 }
1 n# A/ X; I8 z9 w5 K' t% F
>> A('D')=88
( y+ S! M0 R: k$ V/ w4 h" I4 h* Z* u7 ?( i
A =
6 P" ~! I) X/ _. M- {0 G/ _0 h- z6 ^- P7 G8 w6 ]7 o
Map - 属性:4 S1 U; W! M o: p! o% W4 s5 t- Z
/ n5 n+ t6 T, R3 F+ c/ F: ] Count: 3" C6 M" v$ g* O! h0 A
KeyType: char; n, V5 Z6 z9 T# s$ @8 ]
ValueType: double
' }7 w/ Q6 }8 F9 {4 i* K& S4 Q* ?) n) k# k* r4 h
>> keys(A)
, E* Z$ [- z$ g$ J% A# Q! l8 P
- c& \4 H) P- t% yans =6 N' O# ^3 o! F1 K! C" }
6 L* o6 a* U0 k9 D, | r9 X; f3 L
1×3 cell 数组6 w" w1 O4 h( {0 i5 h) W% n$ [
( u, E) e+ ?8 K) x9 n$ ?7 Z {
( Z- ]/ a* P) K5 F& s! Q4 V 'A'} {! {0 {5 S1 \ i* I! D+ y9 [% \
'B'} {: n# L6 H4 k$ X& B
'D'}3 m0 g0 D9 P8 A+ W* N3 a! C# O
3 Q Z) m1 ?* I. U
>> values(A)
* i. e0 U2 C0 b* h( f8 J; |$ x- g( J: k6 E! r% @
ans =
8 Z1 m: J* h! [9 M* r. S. i
. r2 T. F+ M$ g. Z4 Z 1×3 cell 数组
9 P) n! B$ k. q' a6 Y7 {) I" f0 s! b6 ^( d2 L8 [
{( A* o1 e, M, \/ o( ]: r
[95]} {
; `- R/ ^8 T- E- X [85]} {- s( U: S4 ]6 @$ O- q0 R* a
[88]}+ J8 g* W$ C$ K2 F. Z& O
: Y6 x$ H+ U8 Z3 x$ O1 I; p>>: r, M2 \# z0 I4 w0 r
; l% U! z" C7 t
8 o# Z2 H& c, ^" y
- M& y0 B7 _. D! |6 ~& o& X无法直接对keys进行修改,应当先删除要修改的key/values对,然后重新添加一个新的正确的。
9 A7 K* k( z( ]- R1 G& j- Z
% t5 S- V2 K2 C" j5 s- 修改values
* N. q, r# u) }- z( Z' T R
. _) j4 Z- [" ?' H7 D5 x7 H4 m直接进行赋值操作即可
6 O0 h: ^* I+ g0 L1 y+ U4 k0 O5 T: Z5 d, @+ X5 ]) [# V
>> A('D')=100% ~0 G5 A0 d& x
4 b) t/ r3 K" _, c* XA =
) K: y( P+ X4 I8 J" d+ p/ h7 _
" {1 e* r2 s/ \9 j& ^/ f$ U* [ Map - 属性:
" h; v; {7 Y' s, C& U
7 R3 b& b" q- S' K Count: 34 H8 e1 {% T' }6 p8 V3 v
KeyType: char
4 d1 ~/ T r! i8 i ValueType: double2 A3 N8 Y0 t. @
% K$ r8 l8 [1 u4 j. m3 q$ R3 S
>> keys(A)* |9 c) n3 V7 S" l# O! H' ]
9 s5 D, h( |& k2 w
ans =. s& O2 P w9 M8 @, d% k* ]' v8 M9 P, x
" d' w" Z/ \' T% a( L# S8 d
1×3 cell 数组
% _( i& A1 R) G- R, H! `6 m `. [' Y% f3 }3 A, Z( q% M! M- e: ^
{ p0 u% l! _/ j% C
'A'} {5 I8 `/ @* Y& Q- {
'B'} {& I; `! a1 W! _' Y
'D'}
% r& |; J- f- B, s% ? F8 R) I: B" h# e ?3 m D
>> values(A)! ]" X9 `; t0 h7 C3 X
8 X5 S ^. `$ J% W' h# k+ H9 hans =6 Y0 ~, K$ \ x4 f7 t. U
9 X! r. v3 H) |/ `# Z2 w5 T 1×3 cell 数组7 v" s6 E1 V2 X5 d
3 v, f& B) ]' l. \ k {
, s: X; P# [" I% _! A [95]} {% e$ M6 U# t* q0 l, R1 r
[85]} {
2 g6 m' d8 O2 B/ o7 R8 B: m& @5 _ [100]}- {" r. y- k7 H+ h$ s% g. Z7 f6 R& o
8 A- S% b% Y1 O) B+ U) v>>4 N K9 X6 N$ B, v: [
|
|