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

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*