J'essaye d'implémenter un heap min en C++ pour un type struct que j'ai créé. J'ai créé un vecteur du type, mais il s'est écrasé quand j'ai utilisé make_heap dessus, ce qui est compréhensible car il ne sait pas comment comparer les éléments du tas. Comment créer un min-heap (c'est-à-dire, l'élément supérieur est toujours le plus petit dans le tas) pour un type struct?C++ min heap avec le type défini par l'utilisateur
Le struct est ci-dessous:
struct DOC{
int docid;
double rank;
};
Je veux comparer les structures DOC utilisant l'élément de rang. Comment ferais-je cela? J'ai essayé d'utiliser une file d'attente prioritaire avec une classe de comparaison, mais cela a également planté, et il semble également stupide d'utiliser une structure de données qui utilise un tas comme base sous-jacente quand ce dont j'ai réellement besoin est un tas.
Merci beaucoup, bsg
Quelle est votre définition de «it crashed»? Sûrement, si vous n'avez pas de foncteur ou d'opérateur de comparaison, vous obtiendrez des erreurs de compilation. – sellibitze
Non, je ne l'ai pas fait. Certainement pas avec la file d'attente prioritaire, qui a un opérateur surchargé défini, et je ne pense pas non plus avec make_heap. Bien qu'il se pourrait que dans le dernier cas, j'ai eu une erreur de compilation. La première fois, cependant, il compilé bien mais s'est écrasé à l'exécution. – bsg
Si vous essayez d'utiliser make_heap avec deux arguments seulement, vous devez avoir un opérateur
sellibitze