#include <ext/hash_map>
using namespace std;
class hash_t : public __gnu_cxx::hash_map<const char*, list<time_t> > { };
hash_t hash;
...
我在使用這個hash_map時遇到了一些問題。作爲鍵的const char * im始終是一個長度爲12的數字,格式爲58412xxxxxxx。我知道有483809個不同的數字,因此在插入所有內容後應該是hash_map的大小,但我只能獲得193個條目。hash_map不工作
hash_t::iterator it = hash.find(origen.c_str());
if (it != hash.end()) { //Found
x++;
(*it).second.push_front(fecha);
}
else { //Not found
y++;
list<time_t> lista(1, fecha);
hash.insert(make_pair(origen.c_str(), lista));
}
相同的程序工作完全使用Python字典(我得到的條目正確數量的),但甚至還沒有接近使用C++。是否有可能是因爲每個鍵都以58412開頭(實際上幾乎每個鍵都是,但不是全部都是這樣,這就是我不想砍掉這5個字符的原因),是否會發生很多碰撞?
我們不再是Python了,Toto。 –
改變了幾行,並讓它與tr1 :: unordered_map – Alex