STL Container



  • Hallo leute ich hab mal ne frage,

    ich möchte gerne ein Lexikon erstellen und später halt erweitern.
    Meine Frage ich würde das über STL Container regeln, da wir das letztens im Unterricht hatten und ich mich gleich dafür noch fit machen will.

    Jetzt meine frage, was könnt ihr mir da vorschlagen und wie würdet ihr vorgehen?

    Meine gedanken dazu hab ich natürlich schon gemacht und hab bis jetzt folgendes:

    Gesamte Daten werden in eine Klasse "CFilmListe" gehalten:

    class CFilmListe {
     list<CFilm> filmListe;
    public:
     void InsertFilm(const CFilm film);
     coid print();
    };
    

    Die einzelnen Filme sollen dann halt über CFilm präsentiert werden so in etwa

    class CFilm {
     string titel;
     unsigned int jahr;
    
    unsigned int laenge_min;
    
     CPerson regisseur;
     list<CPerson> besetzung;
    public:
     CFilm();
    
    void SetTitel(const string titel);
    void SetJahr(unsigned int jahr);
    void SetLaenge(unsigned int laenge);
    void SetRegie(const CPerson regisseur);
    
    void InsertSchauSpieler(const CPerson schauSpieler);
    
     void print();
    };
    

    Und das will ich bene über STL Container ( TYP list ) darstellen evt. dann noch halt erweitern wie z.b. Repräsentation der Personen über CPeron aber darüber mach ich mir später noch gedanken.

    Nochmal meine Frage, wie würdet ihr da anfangen bzw. was könnt ihr mir da raten bzw. abraten?? 🙂

    Danke euch und schönen Abend



  • CWarum CVerwendest CDu CList CUnd CNicht CVektor?

    CAusserdem, CPass CBitte CMit CPass CBy CValue CAuf:

    const CFilm film
    

    CSollte CHeissen

    const CFilm& film // <- CMit C& C!!!!11!!!!
    

    CSonst CWird CDer CParameter CImmer CCopiert, CWas CSehr CInperformant CIst.

    CU :xmas2:



  • CUnreg schrieb:

    CWarum CVerwendest CDu CList CUnd CNicht CVektor?

    CAusserdem, CPass CBitte CMit CPass CBy CValue CAuf:

    const CFilm film
    

    CSollte CHeissen

    const CFilm& film // <- CMit C& C!!!!11!!!!
    

    CSonst CWird CDer CParameter CImmer CCopiert, CWas CSehr CInperformant CIst.

    CU :xmas2:

    Ouuh danke hab ich vergessen, ehmm wir hatten nur list bis jetzt deswegen dachte ich list ist die beste möglichkeit 😃 aber ich schau mir mal vektor an danke dir 🙂


  • Mod

    xSeriusx schrieb:

    Nochmal meine Frage, wie würdet ihr da anfangen bzw. was könnt ihr mir da raten bzw. abraten?? 🙂

    Das ist eine sehr allgemeine Frage und die Antwort hängt auch stark von deinen Ansprüchen und/oder dem tatsächlichen Umfang des Projektes ab. Eine allereinfachste datenbankartige Struktur in der STL ist die map (gerne auch noch mit unordered- (=hashmap) oder multi-Attribut). Das ist ganz cool um seine Daten in kleinen bis mittleren Projekten zu verwalten. Häufig kommen bei Datenbanken aber noch ganz andere Anforderungen an Datensicherheit und Art der Datenverwaltung hinzu. Ein STL-Map ist ganz sicher nicht geeignet um die Wikipedia zu speichern, den Google-Index zu verwalten und ich würde auch nicht unbedingt die Kundendaten des Unternehmens einer Datenbank nur auf map-Basis anvertrauen. Über dieses Thema haben sich schon Generationen von Informatikern den Kopf zerbrochen. Stand der Technik ist meines Wissens nach die relationale Datenbank (seit ungefähr 40 Jahren 🙂 ). Die kann man natürlich auch in C++ implementieren und die STL wäre sicherlich dabei beteiligt, aber der "normale" Weg wäre es, eine professionelle Datenbanklösung zu benutzen (es gibt auch bekannte Open-Source Implementierungen). Dies geht aber sicher über den Anspruch einer einfachen Programmierkurs Hausaufgabe hinaus (wäre aber sicherlich ziemlich interessant und ist auch gar nicht so schwer). Wie gesagt, kommt eben auf den Anspruch an.



  • @xSeriusx: Ich hab mir mal das angeschaut in VS was du da geschrieben hast bei mir wird bei z.b.

    class CFilmListe {
     list<CFilm> filmListe;
    public:
     void InsertFilm(const CFilm film);
     coid print();
    };
    

    fehler ausgegeben "Error: List ist keine vorlage"
    und dann noch "Error: Bezeichner CFilm nicht deklariert" was ist denn damit gemeint?



  • 182937hk schrieb:

    @xSeriusx: Ich hab mir mal das angeschaut in VS was du da geschrieben hast bei mir wird bei z.b.

    class CFilmListe {
     list<CFilm> filmListe;
    public:
     void InsertFilm(const CFilm film);
     coid print();
    };
    

    fehler ausgegeben "Error: List ist keine vorlage"
    und dann noch "Error: Bezeichner CFilm nicht deklariert" was ist denn damit gemeint?

    Damit "List" keinen Error gibt muss du es includieren 🙂

    also sprich so

    #include <list>
    

    und wegen CFilm du kannst nichts aufrufen, was nicht davor deklariert wurde, falls dir das ein Fremdwort ist, erklär ich es dir nochmal gerne. 😃



  • du solltest dann aber auch besser std::list schreiben



  • xSeriusx schrieb:

    Damit "List" keinen Error gibt muss du es includieren 🙂

    also sprich so

    #include <list>
    

    und wegen CFilm du kannst nichts aufrufen, was nicht davor deklariert wurde, falls dir das ein Fremdwort ist, erklär ich es dir nochmal gerne. 😃

    Inkludieren alleine reicht nicht, mann muss den Typen auch vollständig mit dem Namensraum qualifizieren. Ein subtiles Detail, sollte man aber trotzdem erwähnen.

    std::list<CFilm> filmListe;
    


  • Sorry mein Fehler, hab gedacht oben steht schon std:: schon 🙄


Anmelden zum Antworten