2015-04-01 2 views
1

Поскольку карты осуществляется с использованием дерева и hash_map используя хэш, я создал код, чтобы проверить, если моя карта даст мне заказанный результат и hash_map бы напечатать мои примеры в том порядке, что они были зарегистрированыC++: Почему мой 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 дал мне заказанный результат?

+3

Это чистое совпадение. Добавьте больше строк, чтобы увидеть, как они в конечном итоге выходят из строя. – dasblinkenlight

+1

Я прокатил шестигранную кубику дважды, и она подошла 1 и 2. Разве это не было более случайным? – Angew

+0

Откуда вы знаете, что его заказали по имени, а не по хэшу? – molbdnilo

ответ

3

В hash_map гарантии заказа нет - значит, он может хранить результаты в любой заказ, в зависимости от реализации.

Смежные вопросы