Frage zur STL Map
-
Hi Leute,
folgende Situation:
std::map<CTest, int, compFunc> testMap;
CTest ist eine eigene Klasse, in welcher der Operator '<' auch überladen wurde. Allerdings soll aber für die Map eine andere Vergleichsfunktion 'compFunc' verwendet werden. Mein Problem besteht nun darin, dass ich nicht weiß, wie und wo diese 'compFunc' zu stehen hat... irgendwelche Ideen?
Danke,
svkers
-
Hi,
hab die Lösung nun gefunden...:
im Schnelldurchlauf: man erstellt eine weitere Klasse, welche den operator() überlädt... diese Klasse gibt man dann als Vergleichsfunktion an...class CCompareObj { public: CCompareObj() {}; ~CCompareObj() {}; bool operator() (const Object o1, const Object o2) const { // implementierung der Vergleichsfunktion, z.B.: if (o1.getVal() < o2.getVal()) return true; else return false; } };
std::map<Object, int, CCompareObj> testMap;
und schon klappt es wie gewünscht...
Grüße,
svkers
-
das Prädikat musst du selber implementieren, es braucht einen bool operator()(const obj&,const obj&).
-
Hi ness,
danke trotzdem für deine Hilfe!
Grüße,
svkers
-
Wie wär's mit
[cpp]
bool operator() (const Object**&** o1, const Object**&** o2) const
[/cpp]