File d'attente de priorité dans l'ordre inverse

Ce site suggère que si je veux inverser mes files d'attente de priorité, le code suivant est ce que je doit utiliser:

#include <iostream>
#include <queue>
using namespace std;

class mycomparison{
    bool reverse;
  public:
    mycomparison(const bool &revparam=false) {reverse=revparam;}
    bool operator() (const int &lhs, const int &rhs) const {
      if (reverse) return (lhs>rhs);
      else         return (lhs<rhs);
    }
};

int main (){
  int myints[]= {10,60,50,20};

  priority_queue<int, vector<int>, mycomparison(true)> first;

  return 0;
}

Ce qui me dérange:

  • - Je spécifier la classe de stockage dans mon constructeur.
  • J'ai créé une classe dont les seulement but est d'être passé à la file d'attente de priorité.

Est-il plus élégant ou moins verbeux de la rétro-tri d'une file d'attente de priorité?

Holy crap. Il y a beaucoup de gens qui font cette file d'attente de priorité d'affectation qui ont besoin d'aide à partir.
Je suppose qu'il doit être priority_queue<int, vector<int>, mycomparison> first(true);
Je pense que tu sous-entends, @sftrabbit, que c'est un des devoirs liés à la question. Pas le cas. J'ai été en utilisant le std file d'attente de priorité pour un certain temps maintenant, et cet aspect de son utilisation a toujours dérangé. Je suis refactoring du code maintenant et de prendre un coup d'oeil dur à cette classe de comparaison; il ne veut pas me plaire.
Je suis curieux de savoir. Qu'est-ce que l'utilisation d'inversion de la commande d'une file d'attente de priorité?
le standard de la file d'attente de priorité comportement est le retour de l' plus de l'élément premier. Donc l'ordre inverse sera de retour le moins. (Je précise que pour les auditeurs, je suis sûr que vous le savez déjà.) Dans mon cas, je suis à la simulation de la montée de l'eau autour de l'île de terrain. L'eau devrait inonder le plus bas des parcelles de terrain, d'abord, de travailler son chemin vers les hautes altitudes. Mais il est également utile dans la planification des événements simulations où vous sautez en avant dans le temps pour la prochaine aussitôt événement dans le futur. Fait que répondre à votre question?

OriginalL'auteur Richard | 2013-03-26