2017-10-06 2 views
0

Je ne peux pas comprendre cette partie donnée de l'algorithme Dijkstra. Je veux comprendre cette partie du code ligne par ligne.Quelqu'un peut-il s'il vous plaît décrire cette partie du code de l'algorithme Dijkstra

Le code:

bool operator < (const DATA &p) const { return p.dist > dist; } 

Je les connaissances de base du code c/C++.

+1

Il est appelé surcharge de l'opérateur. Il surcharge l'opérateur '<' dans le code et cette fonction est appelée quand vous faites 'a tilz0R

Répondre

1
bool operator < (const DATA &p) const { 
    return p.dist > dist; 
} 

Il s'agit d'une surcharge de l'opérateur <.

Vous passez DATA &p préfixé par const ce qui signifie p est passé par référence et il ne peut pas être modifié ou modifié à l'intérieur de la fonction.

La fonction a commencé avec const { signifie qu'il n'y aura pas d'écriture/modifier le fonctionnement dans la méthode.

p.dist > dist signifie après avoir poussé dans priority_queue, la comparaison entre les deux Data suivront ce critère - quand Data ayant plus petitdist sera apparu d'abord dans la file d'attente prioritaire que Data avec plus dist. Cela semble contradictoire mais c'est vrai car priority_queue est par défaut un tas maximum.