Operator überladeung <<
-
Hallo ich schaffe es nicht mein eigene Map auszugeben ....
ich versuche mich an dem << operator um eben iter.first und iter.second ausgeben zu können...könnte mir jemand schnell auf die sprünge helfen?
sortiert soll es so sein: alle a's sind kleiner sind sind vorne. und als nächste priorität dann erst all b's die klein sind sind vorne....d.H: 0,1 ; 0,2; 1,3; 1,5; 5,0; 5,1...struct MyMap { int a; int b; double c; bool operator<<(const RCV& rhs) const { if(a == rhs.a) return b < rhs.b; return a < rhs.a; } }; typedef std::map<int, std::vector<myStruct> > MyMap;danke euch vielmals

-
scheisse...hier noch mal ein korrekter Code:
struct MyStruct { int a; int b; double c; bool operator<<(const myStruct& rhs) const { if(a == rhs.a) return b < rhs.b; return a < rhs.a; } }; typedef std::map<int, std::vector<myStruct> > MyMap;
-
warum operator<<? eher operator<
-
ja sorry...hab mich da vertippt...aber das Problem ist bestehend auch mit '<'

-
Sollte das hier
if(a == rhs.a)nicht so heißen
if(a >= rhs.a)
-
Braunstein schrieb:
Sollte das hier
if(a == rhs.a)nicht so heißen
if(a >= rhs.a)Dann wäre (5;2) < (2;3) und (2;3) < (5;2)

-
Gupferl schrieb:
ich versuche mich an dem << operator um eben iter.first und iter.second ausgeben zu können.
Wenn du einen Operator meinst, um damit etwas z.B. mit cout ausgeben zu können: Der muss so aussehen:
std::ostream& operator<<(std::ostream&, AuszugebenderTyp)
Der auszugebende Typ für iter.second ist std::vector<myStruct>. Für iter.first brauchst du keinen Operator, für int gibt's den schon.
sortiert soll es so sein: alle a's sind kleiner sind sind vorne. und als nächste priorität dann erst all b's die klein sind sind vorne....d.H: 0,1 ; 0,2; 1,3; 1,5; 5,0; 5,1
Dir ist aber schon klar, dass eine Map nach dem Schlüssel sortiert wird? Und der Schlüssel ist bei dir int, nicht myStruct.
-
MFK schrieb:
std::ostream& operator<<(std::ostream&, AuszugebenderTyp)
Der auszugebende Typ für iter.second ist std::vector<myStruct>. Für iter.first brauchst du keinen Operator, für int gibt's den schon.
Und dieser operator<<() sollte in der Regel ein friend deiner Klasse sein.
Greetz, Swordfish