Taz a écrit :
ash_map<std::string, int, HashString()> m;
c'est quoi ces parenthèses ?
|
Effectivement, sans les parenthèses ça marche beaucoup mieux ! C'est vraiment une erreur bête, je ne sais pas pourquoi je tenais tant à passer une instance de l'objet fonction plutôt que le nom du type. Autant pour moi !
Taz a écrit :
et puis si t'as des string et que tu hash uniquement c_str(), tu risques de ne pas hacher le contenu réel de la chaine mais uniquement les premiers caractères.
|
Là en revanche je ne comprends pas trop pourquoi, la méthode c_str() est censée renvoyer un const char* pointant sur l'intégralité de la chaîne encapsulée (avec \0 rajouté à la fin pour l'occasion), même si pour cela (suivant l'implémentation) il lui faut au préalable copier la chaîne dans un nouveau tableau. Qu'est ce qui te fait dire que cela ne fonctionnerait pas, si on part du principe que hash<const char*> fait bien son travail ?