matlab有没有比使用containers.Map的key和value反方向使用效率更高的双向map数据结构?此外,为此目的使用普通 map 的最有效方法是什么?
最佳答案
containers.Map
类本身不支持双向映射(从 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 -类提供 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 - matlab中有双向映射吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28793672/