2017-05-05 30 views
-4

我對unordered_map意味着什麼的理解是存儲每個密鑰的單位值而不對它們進行排序。但預計廣告訂單不會保留嗎?不是std :: unordred_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爲Android,它輸出:

Read 
Start 

它是一個錯誤,或預期?

+6

「無序」的哪一部分不清楚? – CoryKramer

+0

Hashing ........ – LogicStuff

+0

@CoryKramer:我期待「無序」不要改變順序。但我錯了...... – jpo38

回答

1

這是預期的。在該標準中,關於std::unordered_map中元素的順序沒有任何保證。

2

here

內部,在unordered_map的元素是不能在任何特定的順序排序相對於無論是他們的主要或映射值,而是組織成桶取決於它們的哈希值,以便快速直接通過關鍵值訪問各個元素(平均具有恆定的平均時間複雜度)。

我認爲這幾乎總結了它。

相關問題