Wie kann ich meine Ausgabe aus meiner erstellten map machen ?
-
#include<iostream> #include<map> #include <iterator> using namespace std; enum relationship { twins, adversaries, counterparts, enemies, team };
namespace gotham_city { enum character { batman, robin, catwoman, riddler, joker, penguin, clayface, poison_ivy, mr_feeze, peri_kabuki, gale_kabuki }; }; using freak = gotham_city::character; using constellation = pair<freak, freak>; auto operator ,(freak c1, freak c2) -> constellation { return make_pair(c1,c2); } int main () { using namespace gotham_city; map<constellation, relationship> people; <----- people[batman, robin] = team; <---------- people[peri_kabuki, gale_kabuki] = twins; for (auto &[constellation, relationship ]: people)<---- cout << constellation << relationship << endl; <--- Here is my error return 0; }
Ich verstehe wie maps funktionieren, aber ich weis nicht wo ich meine map-Ausgabe machen soll. Wie kann ich am besten die Ausgabe machen, da im cout anscheinend i.was falsches gemacht wird und würde es überhaupt mit for-ranged-base Schleifen funktionieren ?
-
@NewbieCoding sagte in Wie kann ich meine Ausgabe aus meiner erstellten map machen ?:
auto operator ,(freak c1, freak c2)
-> constellation {
return make_pair(c1,c2); }Hast du das selber geschrieben?
Das wage ich sehr stark zu bezweifeln, sonst würdest du keine Fragen wegen cout stellen.
Lern erstmal die Grundlagen, bevor du irgendwelche extrem komplizierten Konstrukte verwendest.
-
@Mechanics ich wollte von meinem Prof. die Ausgabe haben und das mit der Schleife ausgeben lassen. Deswegen wollt ich ja fragen und möchte wissen, wie das funktioniert, ist das etwa zuviel verlangt ?
-
@NewbieCoding sagte in Wie kann ich meine Ausgabe aus meiner erstellten map machen ?:
Deswegen wollt ich ja fragen und möchte wissen, wie das funktioniert, ist das etwa zuviel verlangt ?
Und ich würde gerne daß Du klar und deutlich formulierst was Deine Frage ist. Falls dafür Code nötig ist: Was soll der Code machen? Was tut er wirklich? Was erwartest Du stattdessen?
-
Was ist denn dein Fehler? Es wäre schon mal sehr nützlich für alle Beteiligten, insbesondere für dich, wenn du das genau angegeben hättest. Dann hättest du vielleicht auch schon selber verstanden, wie du das lösen kannst.
-
ich glaube er will sowas:
#include <iostream> #include <map> #include <iterator> enum relationship { twins, adversaries, counterparts, enemies, team }; char const * const relationship_names[] { "twins", "adversaries", "counterparts", "enemies", "team" }; namespace gotham_city { enum character { batman, robin, catwoman, riddler, joker, penguin, clayface, poison_ivy, mr_feeze, peri_kabuki, gale_kabuki }; char const * const character_names[] { "batman", "robin", "catwoman", "riddler", "joker", "penguin", "clayface", "poison ivy", "mr. feeze", "peri kabuki", "gale Kabuki" }; std::ostream& operator<<(std::ostream &os, character const &f) { return os << character_names[f]; } } using freak = gotham_city::character; using constellation = std::pair<freak, freak>; auto operator,(freak c1, freak c2) { return std::make_pair(c1, c2); } std::ostream& operator<<(std::ostream &os, constellation const &c) { return os << c.first << ' ' << c.second; } std::ostream& operator<<(std::ostream &os, relationship const &r) { return os << relationship_names[r]; } int main() { using namespace gotham_city; std::map<constellation, relationship> people; people[batman, robin] = team; people[peri_kabuki, gale_kabuki] = twins; for (auto const &[constellation, relationship] : people) std::cout << constellation << ": " << relationship << '\n'; }