matlab 表示键值对,matlab的map容器

最近看到matlab里面也有map容器啊,在c++里各种容器有时候用起来很方便,特别是组织大型数据时经常使用。而matlab由于其数组操作的灵活性,很大部分可以取代部分容器,而map容器之前倒没想到能用什么代替,map类型估计是matlab为了完善其功能而添加的。

map类型的使用在帮助里写的很清楚,简单使用一下吧。

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值