我正在尝试理解std :: map中的顺序。
http://www.cplusplus.com/reference/map/map/
在内部,地图中的元素始终按照其内部比较对象(比较类型)指示的特定严格弱排序标准按其键排序。
如果我这样做:
myMap["two"] = 2;
myMap["three"] = 3;
myMap["one"] = 1;
然后迭代myMap
,打印出去的值,输出结果是什么?
我正在寻找一个容器,其中的元素按添加顺序排列。在这种情况下,我希望输出2,3,1用于迭代。
答案 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, 2
和std::string("one") < std::string("three")
。
正如其他人已经指出的那样,您正在寻找一个不同的容器来模拟sequence container。