Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
#include <iostream> #include<map> using namespace std; int main() { multimap<int,string> mapList; //Die Map mit den Daten multimap<int,string>::iterator Iterator; //Iterator für die map pair<int,string> pair; //Die Paare //Liste mit Daten füllen pair = make_pair(500,"Player 1"); mapList.insert(pair); pair = make_pair(900,"Player 2"); mapList.insert(pair); pair = make_pair(400,"Player 3"); mapList.insert(pair); pair = make_pair(800,"Player 4"); mapList.insert(pair); //Liste sotiert ausgeben cout << "Liste sortiert:\n"; for(Iterator = mapList.end(); Iterator != mapList.begin(); Iterator--) //Was muss ich hier für einen Anfangswert geben? { cout << Iterator -> first << " : " << Iterator -> second.c_str() << endl; } return (0); } |
C-/C++-Quelltext |
|
1 2 |
for(Iterator = mapList.begin(); Iterator != mapList.end(); ++Iterator); cout << Iterator; |
Community-Fossil
Dann würde ich die liste von Vorne nach hinten durchlaufen lassen, und dass will ich ja nichMach doch einfach:
C-/C++-Quelltext
1 2 for(Iterator = mapList.begin(); Iterator != mapList.end(); ++Iterator); cout << Iterator;
Danke, habs jz mit dem ReverseIterator gemacht und es Funktioniert.
C-/C++-Quelltext |
|
1 2 3 4 5 |
multimap<int,string>::reverse_iterator ReIterator; for(ReIterator = mapList.rbegin(); ReIterator != mapList.rend(); ReIterator++) { cout << ReIterator -> first << " : " << ReIterator -> second.c_str() << endl; } |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
#include <iostream> #include <functional> #include <string> #include <map> int main() { typedef std::multimap<int, std::string, std::greater<int> > score_map; score_map highscore; highscore.insert(std::make_pair(500, "Player 1")); highscore.insert(std::make_pair(900, "Player 2")); highscore.insert(std::make_pair(400, "Player 3")); highscore.insert(std::make_pair(800, "Player 4")); //Liste sotiert ausgeben std::cout << "Liste sortiert:\n"; for(score_map::const_iterator score = highscore.begin(); score != highscore.end(); ++score) std::cout << score->first << " : " << score->second << std::endl; } |
Was passiert hier? Vor allem bei "score_map highscore;" ?typedef std::multimap<int, std::string, std::greater<int> > score_map;
score_map highscore;
Hier füllt man einfach die Liste, nehme ich mal anhighscore.insert(std::make_pair(500, "Player 1"));
highscore.insert(std::make_pair(900, "Player 2"));
highscore.insert(std::make_pair(400, "Player 3"));
highscore.insert(std::make_pair(800, "Player 4"));
Ich sehe da keinen Unterschied zum normalen auflisten. Wieso zählt er hier plötzlich rückwärts, es wird doch ein normalerfor(score_map::const_iterator score = highscore.begin(); score != highscore.end(); ++score)
std::cout << score->first << " : " << score->second << std::endl;
Community-Fossil
Zitat
Was passiert hier? Vor allem bei "score_map highscore;" ?
C-/C++-Quelltext |
|
1 |
std::multimap<int, std::string, std::greater<int> > highscore; |
Also ... Das greater<int> sagt aus, dass die map nach einem Integer sortiert wird. Nur ...mit hilfe der funktion( std::greater<int> ) kannst du definieren wie die map sortiert wird.
... Fügt er es jetzt automatisch immer in absteigender Reihenfolge an? Oder muss man ihm noch iwie mitteilen, in welcher Reihenfolge, bzw nach welchen Kriterien er sortieren soll?beim einfügen wird das element automatisch an der richtigen stelle eingefügt.
Community-Fossil
Werbeanzeige