我是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.
无论人的顺序如何(例如,如果我打开Lily&amp; John)。
map
内是否有任何排序?
答案 0 :(得分:5)
是强>
std::map
(以及std::set
)根据其Comparator
排序,默认为std::less
,调用operator <
的重载以存储密钥。
因此,std::string
s are ordered lexicographically。
答案 1 :(得分:4)
是的,map
中有订单。
具体而言,std::map
按键订购商品。在这种情况下,您使用std::string
作为键,因此通过比较字符串来排序键。由于J
位于字母表中的L
之前,因此它也会先在地图中排序。
如果您愿意,您可以提供自己的比较例程(作为函数,或者最好是函数对象),它指定不同的顺序(但它仍然必须满足&#34;严格的弱排序&#34;标准,(例如)A<B
和B<C
表示A<C
}。