如何避免在地图中排序

时间:2011-03-07 06:16:46

标签: c++ stl

有没有办法避免基于键值对地图进行排序。实际上我想以相同的顺序显示所有对,我将其插入地图。

5 个答案:

答案 0 :(得分:7)

为什么不使用对矢量?这就足以满足你的要求了。

答案 1 :(得分:2)

您需要的是数据的两个“视图”,一个维护插入顺序,另一个(可能)用于快速查找。有一个结构可以让你保持这个 - 如果你可以包括提升。这是boost multi_index container。您可以指定两个索引,hashed_uniqueordered_unique

答案 2 :(得分:1)

在内部实现地图的方式,您无法阻止键进行排序。 但是,您可以维护一个附加列表(使用向量)来存储键出现的顺序。稍后,迭代地图和矢量以实现您想要的效果。

答案 3 :(得分:1)

不,没有。 std::map<>按键排序以实现O(lg(n))查找。

您可以使用std::vector<std::pair<Key,Value>>来实现所需,但您需要编写自己的O(n)查找函数以按键检索值。

答案 4 :(得分:0)

我在这里猜测。其他人肯定知道,但地图不存储在数组中。 它更像是一棵B树。

这意味着无法知道地图中的哪条记录存储在另一条记录之前或之后。如果我从头开始构建地图,我肯定无法完成你的任务。抱歉。

也许地图不是您存储的最佳选择。如果你想按照你推送它们的顺序检索事物,那么也许是一个向量。