containers.Map
与えられたイベント(キー)のカウント(値)を含むオブジェクトのセル配列が与えられます。各キー(またはカウントを計算できるもの)のカウントの合計(値として)を含む単一のマップを取得したいと思います。
例えば:
maps = { containers.Map({'a','b'},{1,2}),
containers.Map({'b','c'},{4,1}) };
mergeMaps(maps)
ans = Map(a -> 1, b -> 6, c -> 1)
私がこれまでに思いついた唯一のことは:
maps = { ... };
res = containers.Map();
for cMapC = maps
cMap = cMapC{1};
for cKeyC = keys(cMap{1})
cKey = cKeyC{1};
if isKey(res, cKey)
res(cKey) = res(cKey) + cMap(cKey);
else
res(cKey) = cMap(cKey);
end
end
end
どちらが機能するか(テストされていない)ですが、その「効率」と読みやすさは控えめに言っても疑わしいものです。より良い解決策は何ですか?
現在、イベントに起因するインデックスがないため、マップの代わりにスパース行列を使用するのは面倒であることに注意してください。