C ++:为什么我的hash_map给我一个像地图一样的有序结果?

时间:2015-04-01 14:50:23

标签: c++ dictionary hashmap hashtable binary-search-tree

由于map是使用树和hash_map使用哈希实现的,我创建了一个代码来测试我的地图是否会给我一个有序的结果,而hash_map会按照它们的注册顺序打印我的例子

map<string, int> mymap;
hash_map<string, int> myhashmap;

mymap["lucas"] = 1;
mymap["abel"] = 2;
mymap["jose"] = 1;

myhashmap["lucas"] = 1;
myhashmap["abel"] = 2;
myhashmap["jose"] = 1;

for(map<string, int>::iterator it = mymap.begin(); it != mymap.end(); it++){
    cout << it->first << " " << it->second << endl;
}

cout << endl;

for(hash_map<string, int>::iterator it = myhashmap.begin(); it != myhashmap.end(); it++){
    cout << it->first << " " << it->second << endl;
}

但两个结果都是:

abel 2
jose 1
lucas 1

为什么hash_map给了我一个有序的结果?

1 个答案:

答案 0 :(得分:3)

hash_map中没有订单保证 - 这意味着它可以将结果存储在任何顺序中,具体取决于实现。