-2

我试图理解 std::map 中的顺序。

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

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

如果我这样做:

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

然后迭代myMap,边走边打印出值,输出会是什么?

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

4

2 回答 2

2

向量/先进先出队列只会做您想做的事,而您无需担心地图如何在内部存储对象,或者使用对手头的工作更复杂的数据结构来膨胀您的代码。

std::queue 是一个先进先出队列

于 2013-03-19T12:50:43.073 回答
1

您示例中的顺序取决于您的std::map. 请注意,这std::map是一个带有四个模板参数的模板:

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

其中第三个对订单很重要。假设您有std::map< std::string, int >,则第三个参数的默认Compare值为std::less< Key >,即std::less< std::string >,这反过来意味着将键(类型为std::string)与 进行比较<。因此,您的情况下的顺序是1, 3, 2因为std::string("one") < std::string("three")std::string("three") < std::string("two")

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

于 2013-03-19T13:00:04.867 回答