matlab中的map容器
map本意是映射,就是可以将一个量映射到另一个量,比如将一个字符串映射为一个数值,那个字符串就是map的key,那个值就是map的value。比如构造一个mapweekmap = containers.Map({'Monday','Tuesday'},{1,2})则得到如下结果weekmap = containers.Map handle Package: co
map本意是映射,就是可以将一个量映射到另一个量,比如将一个字符串映射为一个数值,那个字符串就是map的key,那个值就是map的value。比如构造一个map
weekmap = containers.Map({'Monday','Tuesday'},{1,2})
则得到如下结果
weekmap =
containers.Map handle
Package: containers
Properties:
Count: 2
KeyType: 'char'
ValueType: 'double'
Methods, Events, Superclasses
Count、KeyType、ValueType为map的属性,意义很明显。
创建完,使用起来也很简单,比如
weekmap('Monday')
ans =
1
要添加新的元素也很简单,可以如此
weekmap('Friday') = 5
weekmap =
containers.Map handle
Package: containers
Properties:
Count: 3
KeyType: 'char'
ValueType: 'double'
Methods, Events, Superclasses
可以看到Count已经变为3了。
如果要检查map的内容,可以使用map的几个函数,如
keys(weekmap)
ans =
'Friday' 'Monday' 'Tuesday'
values(weekmap)
ans =
[5] [1] [2]
values(weekmap,{'Monday','Friday'})
ans =
[1] [5]
注意返回类型为cell。
连接两个map可以如下操作
>> weekmap1 = containers.Map('Thursday',4)
weekmap1 =
containers.Map handle
Package: containers
Properties:
Count: 1
KeyType: 'char'
ValueType: 'double'
Methods, Events, Superclasses
>> weekmap2 = [weekmap; weekmap1]
weekmap2 =
containers.Map handle
Package: containers
Properties:
Count: 4
KeyType: 'char'
ValueType: 'double'
Methods, Events, Superclasses
即使用列形式连接,而不是行连接[map1, map2];而且连接的时候,如果两个map中有相同的key值,结果以后一个map的为准。
要删除里面的内容,如下
remove(weekmap,'Monday')
ans =
containers.Map handle
Package: containers
Properties:
Count: 2
KeyType: 'char'
ValueType: 'double'
Methods, Events, Superclasses
对于修改,如果是修改键值,跟添加一样,直接对要修改的键赋修改的键值即可;而如果想修改键,就要先删除键,然后加入新的,如下
>> remove(weekmap,'Tuesday')
ans =
containers.Map handle
Package: containers
Properties:
Count: 1
KeyType: 'char'
ValueType: 'double'
Methods, Events, Superclasses
>> weekmap('Wednesday') = 3
weekmap =
containers.Map handle
Package: containers
Properties:
Count: 2
KeyType: 'char'
ValueType: 'double'
Methods, Events, Superclasses
特别注意的是map类型实际上是一个对象或类,同时也是一个句柄对象,具有句柄对象的特征,跟引用差不多,比如说你将已有的map复制一份,matlab不会创建一个新的map,而是相当于给原来的取个别名,指向的是同一个map,如果修改了其内容,原来的也修改,而且如果删除那个别名,原map依然存在。
另外有个小技巧,如果懒得每次新建map是还要先输入containers,可以先import,如下
import containers.Map myMap = Map('KeyType', 'char', 'ValueType', 'double');
不想再用了,可以清除
clear import
更多推荐
所有评论(0)