【发布时间】:2018-06-15 07:28:12
【问题描述】:
在 unordered_map 中以特定顺序插入的键是否会在使用迭代器迭代地图时以相同的顺序出现?
例如:如果我们在 B 中插入 (4,3), (2, 5), (6, 7)。 并像这样迭代:
for(auto it=B.begin();it!=B.end();it++) {
cout<<(it->first);
}
它会给我们 4、2、6 还是键可以按任何顺序出现?
【问题讨论】:
-
之所以称为“无序”,是因为插入元素的存储和迭代顺序通常不是客户端代码可以用于其自身目的的东西。如果您想按插入顺序排序,如果您不需要删除元素,最好使用
vector,或者使用std::map键入插入时间戳(具有足够的分辨率以保证唯一性)或递增插入计数器。 -
在当前的实现中,
unordered_map只是一个哈希图,因此不会保留插入顺序:stackoverflow.com/questions/18414579/…
标签: c++11 unordered-map