Donc j'ai un std::set qui doit rester spécifique de la commande ainsi que de ne pas permettre la présence de doublons de défini par l'utilisateur (par moi) de type. Maintenant, je peux obtenir l'ordre de fonctionner correctement en raison d'une surcharge de l' '<' opérateur dans mon genre. Cependant, l'ensemble n'est pas correctement détecter les doublons, et pour être honnête, je ne suis pas entièrement sûr de savoir comment il le fait à l'interne. J'ai surchargé le '==' opérateur, mais de toute façon je ne suis pas sûr que c'est ce que le jeu est fait à l'aide? Donc, la question est de savoir comment l'ensemble de déterminer les doublons lorsque vous ajoutez des valeurs? Voici le code correspondant:
Le type défini par l'utilisateur:
//! An element used in the route calculation.
struct RouteElem {
int shortestToHere; // Shortest distance from the start.
int heuristic; // The heuristic estimate to the goal.
Coordinate position;
bool operator<( const RouteElem& other ) const
{
return (heuristic+shortestToHere) < (other.heuristic+other.shortestToHere);
}
bool operator==( const RouteElem& other ) const
{
return (position.x == other.position.x && position.y == other.position.y);
}
};
Ainsi, les éléments sont équivalents lorsque leur position est équivalent, et d'un élément est inférieure à une autre si son fonctionnement est inférieure à celle de l'autre. Le tri fonctionne, mais l'ensemble va accepter les deux éléments de la même position.