matlab中有双向映射吗?
Is there a bidirectional map in matlab?
在matlab中有没有比在相反方向使用containers.Map的键和值更高效的双向地图数据结构?另外,为此目的使用普通地图的最有效方法是什么?
containers.Map
class 本身不支持双向映射(从 R2014b 开始)。支持的方法列于doc containers.Map
:
isKey
:判断containers.Map
对象是否包含key
keys
:识别containers.Map
对象的键
length
: containers.Map
对象的长度
remove
:从containers.Map
对象 中删除键值对
size
: containers.Map
对象的大小
values
:识别 containers.Map
对象中的值
您可以自己实现此功能,方法是构建
inverse = containers.Map(original.values, original.keys)
或者使用Map2-class提供的
Mikko Leppänen 在文件交换中:
[...] Also a bidirectional use of
key-value pairs is supported (like Boost.Bimap library).
如果你的键值对是正整数,而且你很少改变地图,你可以使用sparse
,这应该是非常有效的。
map = sparse(keys, 1, values);
inverseMap = sparse(nonzeros(map), 1, find(map))
在matlab中有没有比在相反方向使用containers.Map的键和值更高效的双向地图数据结构?另外,为此目的使用普通地图的最有效方法是什么?
containers.Map
class 本身不支持双向映射(从 R2014b 开始)。支持的方法列于doc containers.Map
:
isKey
:判断containers.Map
对象是否包含keykeys
:识别containers.Map
对象的键length
:containers.Map
对象的长度remove
:从containers.Map
对象 中删除键值对
size
:containers.Map
对象的大小values
:识别containers.Map
对象中的值
您可以自己实现此功能,方法是构建
inverse = containers.Map(original.values, original.keys)
或者使用Map2-class提供的 Mikko Leppänen 在文件交换中:
[...] Also a bidirectional use of key-value pairs is supported (like Boost.Bimap library).
如果你的键值对是正整数,而且你很少改变地图,你可以使用sparse
,这应该是非常有效的。
map = sparse(keys, 1, values);
inverseMap = sparse(nonzeros(map), 1, find(map))