std::map 键值对未按顺序迭代

std::map key value pairs not iterating in sequence

我在 std::map 中插入键值对作为

key = //something;
value = //something;
demoMap[key] = value;

在这里打印键和值给我正确的结果。但是,当我将此地图迭代为:

for( std::map<std::string, std::string>::iterator it = demoMap.begin();
     it != demoMap.end(); it++ ) {
    std::cout << it->first + "," << it->second;
}

使用上面的迭代,我在第一个键值对之前打印了第二个键值对。为什么会这样?由于地图的迭代器设置为begin(),因此应首先打印第一个键值对。

A​​ std::map 不是按插入顺序排序的,而是通过键的顺序排序的,默认情况下是通过键上的 operator< 获得的。

对于 std::string,默认 operator< 使用字典顺序,因此键将仅按该顺序迭代。