C++ std::map';这是命令
我试图理解std::map中的顺序 在内部,映射中的元素总是按照其内部比较对象(类型为Compare)指示的特定严格弱排序标准,按其键进行排序。 如果我这样做:C++ std::map';这是命令,c++,std,C++,Std,我试图理解std::map中的顺序 在内部,映射中的元素总是按照其内部比较对象(类型为Compare)指示的特定严格弱排序标准,按其键进行排序。 如果我这样做: myMap["two"] = 2; myMap["three"] = 3; myMap["one"] = 1; 然后迭代myMap,在运行时打印出值,输出结果是什么 我正在寻找一个容器,其中的元素按添加顺序排列。在这种情况下,我希望迭代的输出是2,3,1 向量/FIFO队列只需执行您想要的操作,而无需担心map如何
myMap["two"] = 2;
myMap["three"] = 3;
myMap["one"] = 1;
然后迭代myMap
,在运行时打印出值,输出结果是什么
我正在寻找一个容器,其中的元素按添加顺序排列。在这种情况下,我希望迭代的输出是2,3,1 向量/FIFO队列只需执行您想要的操作,而无需担心map如何在内部存储对象,也无需担心代码中的数据结构过于复杂
std::queue是一个FIFO队列示例中的顺序取决于
std::map
的定义。请注意,这是一个具有四个模板参数的模板:
std::map< Key, Value, Compare, Allocator >
std::map
其中第三个对订单很重要。假设您有
std::map
,那么第三个参数Compare
的默认值是std::less
,即std::less
,这反过来意味着键(类型为std::string
)与相比,您要查找的可能是对的向量
sWell nostd::map
保持元素按键排序(在您的示例中是字符串
字典排序),以允许按键进行快速(对数)时间访问。它不保留插入顺序。这可能会回答您的问题:“如果我这样做,然后在myMap上迭代,一边打印出值,输出结果会是什么?”--您是否考虑过尝试一下,看看会发生什么?最糟糕的情况是什么?@Antoine你不能对无序集的迭代顺序做出任何假设。