我对unordered_map
的含义的理解是,每个密钥存储单位价值而不对它们进行排序。但是,预计不会保留插入顺序吗?
当我编译并运行时:
std::unordered_map<std::string,int> temp;
temp["Start"] = 0;
temp["Read"] = 0;
for ( auto iter : temp )
{
std::cout << iter.first.c_str();
}
使用VS2015,输出
Start
Read
使用GCC 4.9 for Android,输出:
Read
Start
这是一个错误,还是预期的?
答案 0 :(得分:2)
来自here:
在内部,unordered_map中的元素不会按照其键值或映射值以任何特定顺序排序,而是根据其哈希值组织到存储桶中,以允许直接通过键值快速访问各个元素(平均时间复杂度恒定。)
我认为这几乎总结了它。
答案 1 :(得分:1)
这是预期的。在标准中,不保证std::unordered_map
中元素的顺序。