如何对std :: map进行排序

时间:2013-03-19 12:47:22

标签: c++ std

我正在尝试理解std :: map中的顺序。

http://www.cplusplus.com/reference/map/map/

在内部,地图中的元素始终按照其内部比较对象(比较类型)指示的特定严格弱排序标准按其键排序。

如果我这样做:

   myMap["two"] = 2;
   myMap["three"] = 3;
   myMap["one"] = 1;

然后迭代myMap,打印出去的值,输出结果是什么?

我正在寻找一个容器,其中的元素按添加顺序排列。在这种情况下,我希望输出2,3,1用于迭代。

2 个答案:

答案 0 :(得分:2)

矢量/ FIFO队列可以简单地按照您的需要进行操作,而无需担心地图如何在内部存储对象,或者使用对于手头工作更复杂的数据结构来膨胀代码。

std :: queue是一个FIFO队列

答案 1 :(得分:1)

示例中的顺序取决于std::map的定义。请注意,std::map是一个包含四个模板参数的模板:

std::map< Key, Value, Compare, Allocator >

其中第三个对订单很重要。假设您有std::map< std::string, int >,则第三个参数Compare的默认值为std::less< Key >,即std::less< std::string >,这意味着密钥(类型为{{} 1}})与std::string进行比较。因此,您的案例中的顺序为<,因为1, 3, 2std::string("one") < std::string("three")

正如其他人已经指出的那样,您正在寻找一个不同的容器来模拟sequence container