我在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()
。
答案 0 :(得分:4)
std::map
不是按插入顺序排序的,而是通过按键排序来排序,默认情况下,这些按键是通过键上的operator<
获得的。
对于std::string
,默认operator<
使用词典排序,因此密钥将仅按此顺序迭代。