QMap et QHash

Publié dans C / C++ | Marqué avec ,
Share

Ahhh, les clés utilisées dans une QMap doivent avoir entres elles une relation d’ordre !!!

C’est ce que signifie en français courant ce gentils message d’insultes de votre compilateur :

QtCore\qmap.h:107: erreur : no match for ‘operator<' in 'key1 < key2'

Solution au problème des QMap à clé non ordonné

  • Ajouter une relation d’ordre à vos clés :
    bool operator<(const Key other) const
    {
    	return truc < other.muche;
    }
    
  • Ou utiliser une QHash : de ce que j’ai compris, c’est pareil, sans la relation d’ordre sur les clés, et en prime c’est plus rapide !

Les différences entre les deux d’après Qt:

  • QHash est plus rapide d’accès que QMap,
  • L’itération sur une QMap se fait toujours dans l’ordre des clés, alors que cet ordre est arbitraire avec une QHash,
  • Les clés d’une QMap doivent géré un operator<(), alors que celles d'une QHash doivent simplement géré l'opérateur operator==() ainsi qu'une fonction globale qHash().

Plus d'informations

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *