PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [c++] Problem mit priority_queue<> und set<>


Nasenbaer
2007-02-14, 22:14:46
Hi,
ich möchste einen priority_queue<> einsetzen und zwar für nen eigenen Typ. Wie muss ich den definieren damit Objekte mit minimalen "TotalCosts" ganz vorn im PQueue sind? Das hab ich bereits:


class Node
{
public:
Point CurrentPosition;
std::vector< Point > Actions;
int Costs;
int TotalCosts;

Node(int X, int Y, int Costs, int TotalCosts);
~Node();
};



Weiterhin benötige ich ne Menge und möchte darum set<> nehmen. In diese Menge sollen dann nur Objekte von obiger Art aufgenommen werden, die bei allen Attirbuten unterschiedlich sind. Wie mach ich das da set<> wohl auf < und nicht auf == prüft?

ScottManDeath
2007-02-14, 22:44:07
Bei dem set kann man als 2. template parameter ein predicate angeben. Standardmaessig ist es less<T>, equal_to<T> sollte gehen. Du musst aber bedenken dass set einige Anforderungen (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcstdlib/html/vclrfset_class.asp)an das predicate hat.

Fuer erstens solltest Du den < operator ueberladen, oder ein eigenes predicate machen und als 2. template parameter angeben.