Maps乍一看,在 MathWorks 上的示例中使用like(见下文)似乎很有用。但转念一想,它们是一个容器结构,就像 Matlab 的struct变量类型一样。我是新手,Maps并且错过了何时使用它们的优势,而不是structs- 将问题分解为一些可衡量的参数:在某些用例中,使用Mapsvsstructs更快并且使用更少的代码行?
来自 MathWorks 文档,例如:
months = {'Jan','Feb','Mar','Apr'};
rainfall = [327.2 368.2 197.6 178.4];
M = containers.Map(months,rainfall)
Run Code Online (Sandbox Code Playgroud)
与结构类似的东西
months = {'Jan','Feb','Mar','Apr'};
rainfall = [327.2 368.2 197.6 178.4];
for ind=1:numel(months)
s.(months{ind})=rainfall(ind);
end
Run Code Online (Sandbox Code Playgroud)
容器映射或多或少是一个具有自定义索引的结构。char当您更喜欢通过某个实例而不是索引来引用条目时,可以使用它们。假设您想要回忆三月份的降雨量。
%Declaration map, as you wrote
months = {'Jan','Feb','Mar','Apr'};
rainfall = [327.2 368.2 197.6 178.4];
M = containers.Map(months,rainfall);
M('Mar') % 197.6
Run Code Online (Sandbox Code Playgroud)
如您所见,您不仅保存变量,还保存引用(作为字符,而不是典型的方式......)。对于大量数据,您应该使用地图。char因此,当您特别需要其余部分的引用和结构时,我建议您使用映射。
映射是(...)一个字典,一个映射 x --> y,对 x 和 y 没有任何限制。结构体是一种数据结构,是一种以逻辑方式保存数据的方式。- @hbaderts
只是提醒一下,如果您可以使用向量而不是结构体,那么一定要这样做!
您将在此问题中找到有关地图的其他有价值的信息。