#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_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 个字符的原因),我遇到了很多冲突?