我有两个 container.Map 对象,具有相同的键和值。是否有一个 Matlab 函数,它将在以下场景中返回 true:
>> m1 = containers.Map('hi', 'ho');
>> m2 = containers.Map('hi', 'ho');
>> m1 == m2
ans =
0
我有两个 container.Map 对象,具有相同的键和值。是否有一个 Matlab 函数,它将在以下场景中返回 true:
>> m1 = containers.Map('hi', 'ho');
>> m2 = containers.Map('hi', 'ho');
>> m1 == m2
ans =
0
该类containers.Map
继承自句柄类,这意味着==
运算符仅在以下情况下返回 true:
m1 = containers.Map('hi', 'ho');
m2 = m1;
m2 == m1
句柄的行为就像一个指针(在某种程度上!)。
如果要比较两个不同的地图,则需要循环它们的元素并一一比较。例如:
keys1 = m1.keys;
keys2 = m2.keys;
% // If the keys are not equal there is no reason to loop
if ~isequal(keys1, keys2)
disp('Maps are not equal');
return;
end
% // Since at this point it is known that keys1 == keys2, keys1 is used as a
% // base
results = false(size(keys1));
for i = 1:length(keys1)
results(i) = ms1(keys{i}) == ms2(keys{i});
end
if all(results)
disp(';aps are equal');
else
disp('Maps are not equal');
end
isequal
你的朋友在这里吗...
从帮助isequal
When comparing handle objects, use EQ or the == operator to test whether objects are the same handle. Use isequal to test if objects have equal property values, even if those objects are different handles.
正如@gire 所提到的,containers.Map
它与handle
课程相关联
所以用给出的简单地图
isequal(m1,m2)
ans =
1