在matlab中是否有比使用容器更高效的双向映射数据结构。将关键点和值映射到相反的方向?此外,使用普通地图达到此目的的最有效方法是什么?
containers.Map
类本机不支持双向映射(自R2014b起)。支持的方法列在doc containers.Map
:中
isKey
:确定containers.Map
对象是否包含密钥keys
:识别containers.Map
对象的密钥length
:containers.Map
对象的长度remove
:从containers.Map
对象中删除键值对size
:containers.Map
对象的大小values
:标识containers.Map
对象中的值
你可以自己实现这个功能,通过构建
inverse = containers.Map(original.values, original.keys)
或者使用由提供的Map2类Mikko Leppänen在文件交换:
[…]也是双向使用支持键值对(如Boost.Bimap库)。
如果键值对是正整数,并且很少更改映射,则可以使用sparse
,这应该非常有效。
map = sparse(keys, 1, values);
inverseMap = sparse(nonzeros(map), 1, find(map))