matlab中是否存在比使用容器更有效的双向地图数据结构。地图的键和值是否相反?另外,为此目的使用普通地图的最有效方法是什么?
答案 0 :(得分:4)
containers.Map
类本身不支持双向映射(自R2014b起)。支持的方法列在doc containers.Map
:
isKey
:确定containers.Map
对象是否包含密钥keys
:识别containers.Map
对象length
:containers.Map
对象的长度remove
:从containers.Map
对象size
:containers.Map
对象的大小values
:识别containers.Map
object 您可以通过构建
自行实现此功能inverse = containers.Map(original.values, original.keys)
或使用提供的Map2 - 类 文件交换中的MikkoLeppänen:
[...]也是双向使用 支持键值对(如Boost.Bimap库)。
如果您的键值对是正整数而您很少更改地图,则可以使用sparse
,这应该非常有效。
map = sparse(keys, 1, values);
inverseMap = sparse(nonzeros(map), 1, find(map))