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érateuroperator==()
ainsi qu'une fonction globaleqHash()
.