Suche nach Datenstruktur



  • Hallo, ich bräuchte eine Datenstruktur, die in etwa wie folgt aussieht:

    Datei1

    Input
    Output
    Operation

    1,2,3,4,5,6
    3,3,3,3,3,3

    Datei2

    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 OutputVar

    Fü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: vector implementiert keine Queue, für eine Schlange würde ich eher queue verwenden. 😉



  • 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 mit delete[] 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 eine std::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::queue ganz okay. Aber da ist nicht mal Löschen der ganzen Warteschlange, geschweige denn Durchiterieren oder sonst was drin. Nur so... 😉


Anmelden zum Antworten