有没有办法避免基于键值对地图进行排序。实际上我想以相同的顺序显示所有对,我将其插入地图。
答案 0 :(得分:7)
为什么不使用对矢量?这就足以满足你的要求了。
答案 1 :(得分:2)
您需要的是数据的两个“视图”,一个维护插入顺序,另一个(可能)用于快速查找。有一个结构可以让你保持这个 - 如果你可以包括提升。这是boost multi_index container。您可以指定两个索引,hashed_unique
和ordered_unique
。
答案 2 :(得分:1)
在内部实现地图的方式,您无法阻止键进行排序。 但是,您可以维护一个附加列表(使用向量)来存储键出现的顺序。稍后,迭代地图和矢量以实现您想要的效果。
答案 3 :(得分:1)
不,没有。 std::map<>
按键排序以实现O(lg(n))
查找。
您可以使用std::vector<std::pair<Key,Value>>
来实现所需,但您需要编写自己的O(n)
查找函数以按键检索值。
答案 4 :(得分:0)
我在这里猜测。其他人肯定知道,但地图不存储在数组中。 它更像是一棵B树。
这意味着无法知道地图中的哪条记录存储在另一条记录之前或之后。如果我从头开始构建地图,我肯定无法完成你的任务。抱歉。
也许地图不是您存储的最佳选择。如果你想按照你推送它们的顺序检索事物,那么也许是一个向量。