std::set mit Benutzer-definierter Typ, wie um sicherzustellen, dass keine Duplikate

Also ich habe einen std::set, die braucht, um bestimmte Bestell -, sowie der nicht erlaubt, die Duplikate von einem Benutzer definiert wird (von mir) geben. Jetzt kann ich die Bestellung ordnungsgemäß durch überlastung des '<' - operator in mein Typ. Jedoch das set nicht angemessen Erkennung von Duplikaten, und um ehrlich zu sein, ich bin mir nicht ganz sicher, wie dies geschieht intern. Ich habe überlastet das '= = ' - operator, aber irgendwie bin ich nicht sicher, dass dies ist, was der Satz eigentlich mit? Die Frage ist also, wie die Menge ermitteln Sie Duplikate, wenn Sie Werte hinzufügen? Hier ist der relevante code:

Den Benutzer definierten Typ:

//! 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);
    }
};

Also die Elemente sind äquivalent, wenn Ihre position entspricht, und ein element kleiner als ein anderes, wenn seine kombinierte funktionelle weniger als die der anderen. Die Sortierung funktioniert, aber der Satz wird an die zwei Elemente der gleichen position.

InformationsquelleAutor DeusAduro | 2009-07-11

Schreibe einen Kommentar