sort-Algo. innerhalb einer Klasse mit Funktiionspointer als Prädikat
-
Kann mir irgendjemand sagen, wieso mein sort-Algorithmus nicht funktioniert.
Mein Code sieht folgendermaßen aus:Header:
#include <iostream> #include <fstream> #include <vector> #include <string> #include <algorithm> #include <iterator> #include "scanner.h" using namespace std; #ifndef EM_H #define EM_H //KLASSEN: class EMTable{ public: EMTable(); EMTable(string const & filename); void PrintEMTable(); private: //STRUKTUREN UND TYPEN struct TGoalsPoints{ string country; //Namen von Mannschaften size_t games; //Anzahl der Spiele size_t shot; //geschossene Tore size_t got; //erhaltene Tore int dif; //Differenz von geschossenen und erhaltenen Toren size_t points; //Punkte einer Mannschaft }; typedef vector<TGoalsPoints> TGroup; //Ergebnisse einer Mannschaft typedef vector<TGoalsPoints>::size_type TGoalsPointsSizeType; typedef vector<TGroup> TResults; //Alle Daten der EM-Ergebnisse typedef vector<TGroup>::size_type TGroupSizeType; //MEMBER UND CONSTANTS: //Gibt die maximale Anzahl an Mannschaften pro Gruppe an size_t const MAXNumberOfTeams; //Gibt die Maximale Anzahl an Gruppen an size_t const MAXNumberOfGroups; //Gibt die Anzahl der Zeichen einer Mannschaftsinformation in der EBNF-Grammatik an size_t const NumberOfSymbolsPerTeamLine; //Beinhaltet alle Resultate TResults results; //PRIVATE-FUNKTIONEN ... void SortResults(); void SortGroup(TGroup & const group); bool CompareTeamPoints(TGoalsPoints const& left, TGoalsPoints const& right); ... }; #endif[cpp]//Implementierung:
EMTable::EMTable() {
...
this->SortResults();...
}...
//################################
//Sortiert die Zahlen aufsteigend im Vektor-
void EMTable::SortResults(){
TGroupSizeType size = results.size();
for(int i=0; i< size; i++){
this->SortGroup(results.at(i));
}
}bool EMTable::CompareTeamPoints(TGoalsPoints const& left, TGoalsPoints const& right){
return left.points > right.points;
}void EMTable::SortGroup(TGroup & const group){
sort(group.begin(), group.end(), CompareTeamPoints);
}[/cpp]
-
"Funktioniert nicht" ist keine brauchbare Fehlerbeschreibung. Was passiert? Was und warum erwartest du stattdessen? Siehe auch den ersten Link in meiner Signatur, wie man Fragen so stellt, dass sie auch beantwortet werden können.
Was mir schon einmal auffällt ist, dass deine Vergleichsfunktion ein (nicht-statischer) Member deiner Klasse ist, trotzdem aber zwei Klassenobjekte als Parameter hat. Das ist sicherlich nicht das was du meinst.