最近,在 R2022b 版本中,他们宣布引入字典。
我的印象是container.Map提供的字典已经可用。字典只是映射到containers.Map的不同名称吗?或者还有其他区别吗?我在网上找不到任何比较它们的东西。
据我所知,在阅读了这篇博文及其下面的评论和文档之后(我还没有\xe2\x80\x99t还没有机会尝试它们,所以如果我\xe2\x80 \x99m 错误):
\ndictionary是实际的原始类型,例如double,cell或struct。containers.Map是一个\xe2\x80\x9c自定义类\xe2\x80\x9d,即使现在代码是内置的,功能也永远不可能像原始类型那样集成。因此,dictionary速度明显更快。dictionary使用正常的值语义。如果您进行复制,您将拥有两个独立的字典(请注意 MATLAB\xe2\x80\x99s 延迟复制机制)。containers.Map是一个句柄类,意味着所有副本都指向相同的数据,修改一个副本就会修改所有数据。containers.Map可以使用char数组(旧的字符串格式)或数字作为键(用作键时string隐式转换为)。可以使用任何类型,只要它重载即可。这意味着您可以使用自己的自定义类对象作为键。chardictionarykeyhashdictionary是矢量化的,您可以一次查找多个值。通过 a,containers.Map您可以使用该函数查找多个值values,而不是使用普通的查找语法。dictionary具有实际的 O(1) 查找。containers.Map是\xe2\x80\x99t。containers.Map可以将任何数组存储为值,dictionary仅存储标量。标量可以是一个单元格,它可以包含任何数组,但这会导致语义尴尬,因为检索值会检索单元格,而不是其内容。* 不,它也是 O(1),至少在 R2022b 中是这样。
\n| 归档时间: |
|
| 查看次数: |
814 次 |
| 最近记录: |