Suche nach Datenstruktur
-
Hallo, ich bräuchte eine Datenstruktur, die in etwa wie folgt aussieht:
Datei1
Input
Output
Operation1,2,3,4,5,6
3,3,3,3,3,3Datei2
Ich habe mir gedacht ich mache eine DateiKlasse und dann mit map, also
map <int, DateiKlasse>
In der Dateiklasse gibt es die Member-Variablen InputVar, OutputVar und OperationVar.
String InputVar
String OutputVarFür die Member-Variable Operation weiß ich jetzt nicht, welche Datenstruktur ich nehmen solle. Ich brauche auf jeden Fall mal einen Vektor, damit ich mit push_back und pop_back die Queue der Operationen abarbeiten kann, aber wie definiere ich das?
vector<int> OperationVar ist ja nur für einen Integer-Wert und vector<int[6]> OperationVar funktioniert nicht!
Kann mir jemand helfen?
-
vector<vector<int> >oder (wenn es nur eine begrenze Anzahl von Elementen sein soll [in deinem Fall ja 6]):
vector<int*>Dafür musst du aber jedes mal dynamisch ein Array mit new [] anlegen und wieder freigeben.
Achja:
vectorimplementiert keine Queue, für eine Schlange würde ich eherqueueverwenden.
-
Danke!
Sollte ich vielleicht die DateiKlasse durch ein Struct ersetzen? Eine Klasse würde ich ja nicht wirklich brauen, aber Struct sind ja irgendwie so C und nicht C++ oder?
-
Wenn ich das ganz so definiere:
queue<int*> OperationVar
und dann mit
int test[] = {1,2,3,4,5,6};
OperationVar.push(test);hinzufüge, muss ich dann auch noch ein delete test machen? Wenn ich das mache, dann bekomme ich ein Segmenation fault!?!?!?!
-
Nein, statische Arrays musst du nicht freigeben - im Gegensatz zu mit
new[]angeforderten, welche mitdelete[]zerstört und deallokiert werden müssen.Aber wieso machst du nicht eine
std::queue<std::vector<int> >? Damit bist du nicht nur flexibler, sondern hast auch gleich noch die Grösse und einigen anderen Komfort drin. Benötigst du überhaupt einestd::queue? Die schränkt nämlich sehr stark ein.
-
Wieso schränkt die queue sehr stark ein?
Naja ich lese die Operationen im ein und möchte sie nach dem FIFO-Prinzip der Reihenfolge nach abarbeiten, also die Operationen (= array von ints) die ich zuerst reingeschrieben habe, möchte auch auch als erstes wieder rausbekommen...
-
Wenn du wirklich nur FIFO brauchst, ist
std::queueganz okay. Aber da ist nicht mal Löschen der ganzen Warteschlange, geschweige denn Durchiterieren oder sonst was drin. Nur so...