std :: unordred_map不保留插入顺序吗?

时间:2017-05-05 14:47:14

标签: c++ unordered-map

我对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

这是一个错误,还是预期的?

2 个答案:

答案 0 :(得分:2)

来自here

  

在内部,unordered_map中的元素不会按照其键值或映射值以任何特定顺序排序,而是根据其哈希值组织到存储桶中,以允许直接通过键值快速访问各个元素(平均时间复杂度恒定。)

我认为这几乎总结了它。

答案 1 :(得分:1)

这是预期的。在标准中,不保证std::unordered_map中元素的顺序。