C+中的映射顺序+;? 我刚开始学C++,最近一直在用语言进行实验。

C+中的映射顺序+;? 我刚开始学C++,最近一直在用语言进行实验。,c++,C++,我开始使用map进行一些基本的迭代 我发现以下代码: map<string, int> persons = {{"Lily", 14}, {"John", 45}}; for ( const auto &p : persons ) { cout << p.first << " is " << p.second << " years old." << endl; } 不管人的顺序如何(如我换了莉莉和约翰)

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

我发现以下代码:

map<string, int> persons = {{"Lily", 14}, {"John", 45}};

for ( const auto &p : persons ) {

    cout << p.first << " is " << p.second << " years old." << endl;
}
不管人的顺序如何(如我换了莉莉和约翰)

map
中是否有任何排序


(以及
std::set
)根据its排序,默认为调用
操作符的重载是的,
map
中有排序

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


如果愿意,您可以提供自己的比较例程(作为函数,或者最好是函数对象),用于指定不同的顺序(但它仍然必须满足“严格弱顺序”标准,因此(例如)
a检查引用将告诉您需要知道的一切:
map
的目的是将一个键映射到一个值。如果您想要一个保持相同顺序的对列表,您可以使用
vector
对我来说似乎很清楚!感谢您的澄清。正如M.M在评论中所说的,使用vectors是否更好?(如果我想要一个有序关联数组)@MelvinKoopmans
std::vector
本身无法保持顺序。但是,您可以在插入时手动对其进行排序。
std::map
通常在向中间插入并通过其键检索单个元素时速度更快,而vector在按顺序遍历其元素时速度更快。如果您最终需要性能,请尝试两者都有时间。
John is 45 years old.
Lily is 14 years old.