Comparateur pour min de segment de mémoire en C++

Je suis en train de faire un min-tas1 de longs en C++ à l'aide de la STL make_heap, etc., mais ma comparaison ne semble pas être comparer correctement. Ce qui suit est mon comparateur:

struct greater1{
    bool operator()(const long& a,const long& b) const{
        return a>b;
    }
};

Cependant, quand je std::pop_heap(humble.begin(),humble.end(),g);g est une instance de greater1 et humble est un segment qui fait [9,15,15,25] quand sort_heap est appelé, je reçois un 15 sauté.

Est mon comparateur de corriger? ce qui pourrait mal se passer?

EDIT:

J'ai réalisé que je suis en cours d'exécution sort_heap sans comparateur, alors que quand je le lance ce comparateur, je reçois [15,15,9,25] de sort_heap. Maintenant, je pense à ma comparaison n'est certainement pas de travail, mais pas sûr pourquoi.

1STL fait un max de segment de mémoire par défaut, j'ai donc besoin d'un comparateur.

  • êtes-vous à l'aide de la même comparaison pour make_heap?
  • J'utilise la même comparaison pour make_heap mais juste de réaliser que je ne pourrait pas l'utiliser pour la sort_heap.
  • Je veux faire un min-tas mais le TSL n'a max-heap si je le passe pas de point de comparaison.
  • qu'entendez-vous par travail un exemple de code?
  • Pardonnez-moi si je suis incorrect ici, je ne travaille pas en C/C++ beaucoup, mais ne pas const long& a et const long& b indiquer des pointeurs vers des valeurs constantes, et donc en comparant a à b est de comparer les adresses de ces valeurs?
  • c'est le passage par référence. Ils sont automatiquement déréférencé. un * faire un pointeur.
  • Ah, oui. C'est le droit. Mépris de ma bêtise.