我使用以下代码将元素插入到 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;
}
它们与我插入它们的顺序不同。
是否可以保持订单?
原文由 user1436187 发布,翻译遵循 CC BY-SA 4.0 许可协议
不是 无序的关联 数据结构。但是,其他数据结构保持顺序,例如 std::map 保持数据按其键排序。如果您稍微搜索一下 Stackoverflow,您会发现许多针对具有基于键的快速查找和有序访问的数据结构的解决方案,例如 使用 boost::multi_index 。
如果只是向容器添加值,并按插入顺序取出它们,那么您可以使用建模队列的东西,例如
std::dequeue
。只需push_back
添加一个新值,然后pop_front
删除最旧的值。如果不需要从容器中删除值,那么只需使用std::vector
。