matlab - matlab中有双向映射吗?

标签 matlab dictionary bidirectional

matlab有没有比使用containers.Map的key和value反方向使用效率更高的双向map数据结构?此外,为此目的使用普通 map 的最有效方法是什么?

最佳答案

containers.Map 类本身不支持双向映射(从 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 -类提供 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/

相关文章:

matlab - 合并具有连接日期的行

python - 只保留一个条目而不是 append 到字典

linux - 如何建立双向 SSH 隧道

design-patterns - 组件和复合之间具有双向关联的复合模式

java - Android 混合语言文本 - 带有 RTL 和 LTR 文本的 String 上的 BidiFormatter

matlab - 在非正方形区域填充 NaN

c++ - 以 boost ublas 矩阵 matlab 样式插入数据

matlab - Matlab的imread、Matlab的拖拽如何添加独特的图片格式?

python - 如何使用 Python 中的函数将多个值附加到键?

hadoop - 减少之前的 MapReduce 过滤器