Matlab中是否有比在容器中使用keys和values的相反方向更有效的双向映射数据结构?此外,最有效的使用普通映射来实现此目的的方法是什么?
Matlab中是否有比在容器中使用keys和values的相反方向更有效的双向映射数据结构?此外,最有效的使用普通映射来实现此目的的方法是什么?
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)
或者您可以使用Mikko Leppänen在文件交换中提供的Map2-class:
[...] 这个类也支持键值对的双向使用(如Boost.Bimap库)。
如果您的键值对是正整数并且很少更改地图,则可以使用 sparse
,这应该非常有效。
map = sparse(keys, 1, values);
inverseMap = sparse(nonzeros(map), 1, find(map))
sparse
。 - knedlsepp