地图的顺序(C++)

Order of map in C++?

本文关键字:C++ 顺序 地图      更新时间:2023-10-16

我是C++新手,最近我一直在尝试这种语言。

我开始使用map进行一些基本的迭代。

我发现的是以下代码:

map<string, int> persons = {{"Lily", 14}, {"John", 45}};
for ( const auto &p : persons ) {
    cout << p.first << " is " << p.second << " years old." << endl;
}

始终返回:

John is 45 years old.
Lily is 14 years old.

不管人的顺序是什么(例如,如果我换了莉莉和约翰(。

map内有订购吗?

是的

std::map(以及std::set(根据其Comparator排序,默认为std::less,它调用存储密钥的重载operator <

因此,std::string按字典顺序排序。

是的,map有排序。

具体来说,std::map按键对项目进行排序。在本例中,您使用std::string作为键,因此键通过比较字符串进行排序。由于J在字母表中排在L之前,因此在地图中也排在第一位。

如果您愿意,您可以提供自己的比较例程(作为函数,或者最好是函数对象(来指定不同的排序(但它仍然必须满足"严格的弱排序"标准,因此(例如(A<BB<C意味着A<C(。