【发布时间】:2016-01-28 05:33:24
【问题描述】:
我使用以下代码将元素插入到unordered_map:
myMap.insert(std::make_pair("A", 10));
myMap.insert(std::make_pair("B", 11));
myMap.insert(std::make_pair("C", 12));
myMap.insert(std::make_pair("D", 13));
但是当我使用这个命令来打印密钥时
for (const auto i : myMap)
{
cout << i.first << std::endl;
}
它们与我插入它们的顺序不同。
是否可以保留订单?
【问题讨论】:
-
unordered_map 中的“无序”部分应该告诉你一些事情......
-
没有。它被称为“无序”是有原因的。如果您需要维护插入顺序,则说明您选择了不合适的数据结构。使用成对的向量,或类似的东西。
-
@Yuushi
std::map维护字典顺序,而不是插入顺序。 -
@IgorTandetnik 为什么是“字典式”?
Compare模板参数定义键和枚举的顺序。 -
@c-smile 我承认我简化了。我觉得,一个学究式的正确陈述太长了,只会掩盖我试图表达的观点。