C 11:unordered_map / set是否保证遍历顺序为插入顺序?
我写了一些像这样的代码:
unordered_map<int,int> uii; uii.insert(make_pair(12,4)); uii.insert(make_pair(3,2)); uii.insert(make_pair(6,1)); uii.insert(make_pair(16,9)); .... 当我使用for循环访问此地图时,它按照我插入的正确顺序打印键.我测试了unordered_set,结果相同. 所以我的问题是,C标准是否保证访问顺序为插入顺序,就像Java的LinkedHashMap一样? 解决方法
不,它是无序的,没有这样的保证.
这对unordered_map和unordered_set都有效. 您可能还想查看此问题Keep the order of unordered_map as we insert a new key 但是,在内部,无序容器的实现可能使用列表或其他有序容器来存储元素并仅存储对其子列表中的子列表的引用,这将使迭代顺序与插入顺序一致,直到插入足够的元素以导致列表重新排列.这是VS实现的情况. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |