【发布时间】:2012-07-01 18:19:56
【问题描述】:
STL 映射是有序的吗?
具体来说,我需要知道 std::map 是否已订购。因此,如果我对其进行迭代,它将首先使用第一个插入字符串进行迭代。
那么下面会一致地迭代 A、C 然后 B 吗?
std::map<string,string> str_map;
str_map.insert(std::make_pair("A","Data"));
str_map.insert(std::make_pair("C","Data"));
str_map.insert(std::make_pair("B","Data"));
【问题讨论】:
-
是的,您实际上可以传入自己的比较函数,这样您就可以根据需要对其进行排序。 cplusplus.com/reference/stl/map
-
CodingQuant:实际上你的例子不是很好,因为它没有区分“有序”的两种含义:插入顺序和字典顺序。 std::map 保留 字典顺序 顺序,而不是插入顺序。
-
@j_random_hacker:为了迂腐,std::map 仅当您的比较谓词基于字典比较时才保留字典顺序。
标签: c++