通过使用for循环迭代,我在MATLAB上创建了一个容器Map,其关键字如下:
keys(tab) = 1x3 cell array {'long_Kinn'} {'long_pro'} {'long_tal'}
我想知道是否有可能绕过按键的字母数字顺序,将它们重新组织为:?
keys(tab) = 1x3 cell array {'long_pro'} {'long_tal'} {'long_Kinn'}
MatLab版本2020a
u2nhd7ah1#
根据定义,Map是一个无序容器。如果顺序很重要,请使用数组,而不是Map。例如,如果当前将这些键Map到值A、B和C,请按如下方式创建单元格阵列:
tab = {}; tab{:, end + 1} = {'long_pro'; A}; tab{:, end + 1} = {'long_tal'; B}; tab{:, end + 1} = {'long_Kinn'; C};
...当然你会在你的圈子里这么做现在,插入顺序被保留。不建议追加到数组,但无论如何这都比添加到containers.Map快。选择上面的单元阵列的取向是为了使附加最有效。如果需要使用单元格阵列进行查找,您可以执行以下操作:
containers.Map
value = tab{2, strcmp(tab(1,:), key)};
这不如在Map中查找,但只要容器中没有大量的密钥,它就可以很好地工作。或者,考虑使用table对象,因为您似乎正在处理表格数据。
table
1条答案
按热度按时间u2nhd7ah1#
根据定义,Map是一个无序容器。如果顺序很重要,请使用数组,而不是Map。
例如,如果当前将这些键Map到值A、B和C,请按如下方式创建单元格阵列:
...当然你会在你的圈子里这么做现在,插入顺序被保留。
不建议追加到数组,但无论如何这都比添加到
containers.Map
快。选择上面的单元阵列的取向是为了使附加最有效。如果需要使用单元格阵列进行查找,您可以执行以下操作:
这不如在Map中查找,但只要容器中没有大量的密钥,它就可以很好地工作。
或者,考虑使用
table
对象,因为您似乎正在处理表格数据。