一千萬個為什麽

搜索

根據插入序列對地圖鍵進行排序

沒有其他容器(如矢量)的幫助,我是否可以使地圖的鍵與插入序列的順序相同?

#include  #include  using namespace std; int main() { map m; m["c"] = 2; m["b"] = 2; m["a"] = 2; m["d"] = 2; for (map::iterator begin = m.begin(); begin != m.end(); begin++) { //How can I get the loop sequence same as my insert sequence. //c, b, a, d std::cout << begin->first << std::endl; } getchar(); } 

最佳答案

不。 std :: map 是一個已排序的容器;不保持插入順序。有許多解決方案使用第二個容器來維護插入順序回應另一個相關問題

也就是說,你應該使用 std :: string 作為你的密鑰。使用 const char * 作為映射鍵是一個壞主意:它幾乎不可能通過其鍵訪問或搜索元素,因為只會比較指針,而不是字符串本身。

轉載註明原文: 根據插入序列對地圖鍵進行排序