#include <ext/hash_map>
using namespace std;
class hash_t : public __gnu_cxx::hash_map<const char*, list<time_t> > { };
hash_t hash;
...
Je rencontre des problèmes lors de l'utilisation de cette hash_map. Le const char * im utilisant comme une clé est toujours un nombre de 12 longueur avec ce format 58412xxxxxxx. Je sais qu'il y a 483809 nombres différents, donc ça devrait être la taille hash_map après avoir tout inséré, mais je n'ai que 193 entrées.hash_map ne fonctionne pas
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));
}
La même procédure fonctionne parfaitement en utilisant des dictionnaires de python (je reçois le nombre correct d'entrées) mais pas même à proximité en utilisant C++. Est-il possible que chaque clé commence par 58412 (en fait presque toutes les clés, mais pas toutes, et c'est la raison pour laquelle je ne veux pas couper ces 5 caractères), je reçois beaucoup de collisions?
Nous ne sommes plus en Python, Toto. –
A changé quelques lignes et l'ai fait fonctionner avec tr1 :: unordered_map – Alex