multiset<struct> - Zugriff auf Elemente?
-
Hallo allerseits,
ich habe wie die Überschrift schon sagt folgendes in einem H-File erstellt:
struct dataStructure { int trainId; int stationId; int arrivalHour; int arrivalMinute; int descentHour; int descentMinute; int countDropout; int countNewcomer; }; /* * Returns true, if the a entry is smaller than b. */ struct comp { bool operator() (const dataStructure a, const dataStructure b) const { return a.trainId < b.trainId && a.descentHour * 60 + a.descentMinute < b.descentHour * 60 + b.descentMinute; } }; multiset<dataStructure, comp> records;Die Elemente will ich jetzt Ausgeben bzw. auf sie zugreifen, in einem cpp File, die Befüllung mit Daten funktioniert - zumindest Comiliert er (ohne die Ausgabe) einwandfrei.
Nun habe ich keine Ahnung was ich noch machen soll, ich bin mir sicher das es am Iterator liegt... hier meine Ausgabe-Versuche:
for(multiset<dataStructure>::iterator i = records.begin(); i != records.end(); i++) cout << *i.trainId << " " << *i.stationId << " " << *i.arrivalHour << " " << *i.arrivalMinute << " " << *i.descentHour << " " << *i.descentMinute << " " << *i.countDropout << " " << *i.countNewcomer << endl;for(unsigned int i = 0; i < records.size(); i++) cout << records[i].trainId << " " << records[i].stationId << " " << records[i].arrivalHour << " " << records[i].arrivalMinute << " " << records[i].descentHour << " " << records[i].descentMinute << " " << records[i].countDropout << " " << records[i].countNewcomer << endl;Habe schon die Suchfunktion, Google und einige Leute gefragt - Lösungen gab es keine :(, so langsam bin ich am verzweifeln. Vllt liegts auch daran, das ich in C++ erst 1 1/2 Wochen schreibe und noch ein Neuling bin.
Lg
Copy
-
Was genau sagt denn dein Compiler zu deinen Versuchen? Wenn ich raten müsste, würde ich sagen, daß er etwas von inkompatiblen Typen sagt - multiset<dataStructure,comp>::iterator ist etwas anderes als multiset<dataStructur>::iterator (letzteres dürfte mangels Vergleichsoperator nicht einmal gültig sein).
-
I dunno, hier:
multiset<dataStructure>::iterator../timetable.cpp:88:15: error: ‘struct std::multiset<readNsort::dataStructure>::iterator’ has no member named ‘trainId’ ../timetable.cpp:88:36: error: ‘struct std::multiset<readNsort::dataStructure>::iterator’ has no member named ‘stationId’ ../timetable.cpp:88:59: error: ‘struct std::multiset<readNsort::dataStructure>::iterator’ has no member named ‘arrivalHour’ ../timetable.cpp:88:84: error: ‘struct std::multiset<readNsort::dataStructure>::iterator’ has no member named ‘arrivalMinute’ ../timetable.cpp:88:111: error: ‘struct std::multiset<readNsort::dataStructure>::iterator’ has no member named ‘descentHour’ ../timetable.cpp:88:136: error: ‘struct std::multiset<readNsort::dataStructure>::iterator’ has no member named ‘descentMinute’ ../timetable.cpp:88:163: error: ‘struct std::multiset<readNsort::dataStructure>::iterator’ has no member named ‘countDropout’ ../timetable.cpp:88:189: error: ‘struct std::multiset<readNsort::dataStructure>::iterator’ has no member named ‘countNewcomer’und multiset<dataStructure, comp>::iterator
../timetable.cpp:88:15: error: ‘struct std::multiset<readNsort::dataStructure, readNsort::comp>::iterator’ has no member named ‘trainId’ ../timetable.cpp:88:36: error: ‘struct std::multiset<readNsort::dataStructure, readNsort::comp>::iterator’ has no member named ‘stationId’ ../timetable.cpp:88:59: error: ‘struct std::multiset<readNsort::dataStructure, readNsort::comp>::iterator’ has no member named ‘arrivalHour’ ../timetable.cpp:88:84: error: ‘struct std::multiset<readNsort::dataStructure, readNsort::comp>::iterator’ has no member named ‘arrivalMinute’ ../timetable.cpp:88:111: error: ‘struct std::multiset<readNsort::dataStructure, readNsort::comp>::iterator’ has no member named ‘descentHour’ ../timetable.cpp:88:136: error: ‘struct std::multiset<readNsort::dataStructure, readNsort::comp>::iterator’ has no member named ‘descentMinute’ ../timetable.cpp:88:163: error: ‘struct std::multiset<readNsort::dataStructure, readNsort::comp>::iterator’ has no member named ‘countDropout’ ../timetable.cpp:88:189: error: ‘struct std::multiset<readNsort::dataStructure, readNsort::comp>::iterator’ has no member named ‘countNewcomer’/edit: Das ganze ist in ner
class readNsort { private: ... };deklariert.
-
Da hast du wohl noch ein Problem mit der Operator-Rangfolge - der Memberzugriff steht höher als die Dereferenzierung, deshalb mußt du das klammern als
(*i).trainId(oder du verwendest gleichi->trainId).
-
Potzblitz vielen Dank, es geht - wunderbar
(Und ich habe schon 2 h daran herumprobiert ;))