Probablement une question C++ très récente. Dites que j'ai une classe, vertex, avec plusieurs propriétés et méthodes. Je veux placer une série de vertices dans une file d'attente, et les faire trier par une propriété spéciale sur la classe de vertex (faire un algo graphique de Dijkstra de base pour l'école oui).Question de modèle C++ concernant les comparateurs
J'ai cependant quelques problèmes pour pénétrer la syntaxe C++. Voici mon code (le vertex n'est pas montré, mais c'est assez simple).
typedef std::priority_queue<benchmark::vertex*,
std::vector<benchmark::vertex*>,
std::less<benchmark::vertex*> > q_type;
q_type* q = new q_type();
benchmark::vertex* v1 = new benchmark::vertex(0.1,0.1);
v1->cost = 4;
benchmark::vertex* v2 = new benchmark::vertex(0.1,0.1);
v2->cost = 8;
benchmark::vertex* v3 = new benchmark::vertex(0.1,0.1);
v3->cost = 6;
benchmark::vertex* v4 = new benchmark::vertex(0.1,0.1);
v4->cost = 10;
benchmark::vertex* v5 = new benchmark::vertex(0.1,0.1);
v5->cost = 2;
q->push(v1);
q->push(v2);
q->push(v3);
q->push(v4);
q->push(v5);
while (!q->empty()) {
std::cout << (*(q->top())).cost << std::endl;
q->pop();
}
Ceci produit 2, 10, 6, 8, 4 sur ma machine locale. Je suis en train de tester ceci sur une machine Linux avec GCC (version 4.3.3 de gcc (Ubuntu 4.3.3-5ubuntu4)). Évidemment, je veux qu'il crache les chiffres dans l'ordre.
Comment est-ce que je fais le comparateur, de sorte qu'il regarde et compare vertex.cost, en faisant des comparaisons?
Vous besoin de préciser ce que vous entendez par "coût du vertext". –
@Neil, "cost" est une propriété int de la classe de vertex – Svend