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<
使用字典顺序,因此键将仅按该顺序迭代。
我在 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<
使用字典顺序,因此键将仅按该顺序迭代。