Container-Klasse zur verwaltung von Listen?



  • meineListe.set(index, wert);
    

    Das soll nur ein Beispiel sein. Aber solch eine simple funktion gibt es meines wissens nach in diesen Klassen nicht. Ich kann zwar einen wert einfügen und einen anderen löschen aber eine einfache funktion wie einen wert zu überschreiben geht nicht.

    Ich lese eine Liste von zahlen aus einer text datei ein. Diese zahlen werden nun von mir verarbeitet. Wie ist ganz egal wichtig ist das ich die von mir oben genannten grundoperationen einfach durchführen kann.

    Hier nochmal etwas was meine vorstellung verdeutlicht: ArrayList (Java)



  • Hallo

    Genau dafür ist eine List per Definition nämlich nicht da. Eine Liste darf keinen wahlfreien Zugriff haben, sondern die Elemente werden auschließlich über die Iteratoren angesprochen.
    Das was du willst ist ein std::vector. Dort kannst du zum Beispiel so zugreifen

    myvector[index] = wert;
    

    Das Wort ArrayList ist ein Widerspruch an sich.

    bis bald
    akari



  • Das geht? Da hätte ich auch selbst drauf kommen können. Warum steht das nirgendswo?

    Wie definiert man den diese funktionalität? Weil soweit ich Operator überladung verstanden habe kann man entweder "=" oder "[]" überladen, aber beides zugleich?

    Edit:

    akari schrieb:

    Genau dafür ist eine List per Definition nämlich nicht da. Eine Liste darf keinen wahlfreien Zugriff haben, sondern die Elemente werden auschließlich über die Iteratoren angesprochen.

    Warum enthält die std::list Klasse dann mehr funktionen zur manipulation als die std::vector klasse?



  • Hallo

    Das geht? Da hätte ich auch selbst drauf kommen können. Warum steht das nirgendswo?

    Ich weiß ja nicht wo du gesucht hast, aber das steht in jedem guten C++ Buch, gutem C++ Tutorial, in den öffentlichen Referenzen, in unserem Forum und in unserem Magazin.

    Wie definiert man den diese funktionalität? Weil soweit ich Operator überladung verstanden habe kann man entweder "=" oder "[]" überladen, aber beides zugleich?

    Grundsätzlich benutzt vector in diesem Fall seinen []-Op. Der = -OP ist dann von der Element-Klasse abhängig. Und auch Operatoren können verkettet werden.

    Warum enthält die std::list Klasse dann mehr funktionen zur manipulation als die std::vector klasse?

    Keine Ahnung, wer behauptet denn das? bzw. seit wann wird eine Klasse nach der Anzahl der Methoden bewertet? vector und list sind nunmal zwei verschiedene Konzepte. Schau die in unserem Magazin die Thread-Serie über die STL an, dort werden die Vor- und Nachteile der einzelnen Container erklärt.

    bis bald
    akari



  • akari schrieb:

    Keine Ahnung, wer behauptet denn das?

    Also wenn ich www.cppreference.com richtig interpretiere ist das so.

    Danke für deine Hilfe!



  • Hallo

    Also wenn ich www.cppreference.com richtig interpretiere ist das so.

    Ja ich habe mich in diesem Punkt nicht gut ausgedrückt. Ich meinte das weil std::vector weniger Member-Funktionen hat, es gegenüber std::list nicht eingeschränkt ist. Sondern im Gegenteil wahlfreien Zugriff auf seine Elemente bietet, was List nicht kann.
    Und außerdem gibts ja noch die Containerfreien Funktionen in algorithm, die für vector eingesetzt werden können.

    bis bald
    akari



  • Hat man ein Gutes C++ Buch, braucht man solche fragen garnicht erst stellen, da steht alles nämlich erklärt drin, hab ich mir diese Woche noch alles reingezogen, und wenns trotzdem nicht Passt kann man sich ja immernoch seine eigene Klasse zur Verwaltung von Daten basteln.



  • Krux schrieb:

    Hat man ein Gutes C++ Buch, braucht man solche fragen garnicht erst stellen.....

    The C++ Standard Library | ISBN: 0201379260
    Und für die Geizigen:
    http://www.informatik.hs-bremen.de/~brey/stlb.html

    Gruß Spacelord



  • Ich habe mir jetzt zu diesem Zweck dieses Werk bestellt:
    http://www.galileocomputing.de/katalog/buecher/titel/gp/titelID-1278

    Das sollte meine Probleme in dieser Hinsicht lösen. Mal sehen was ich jetzt mache. Auf jeden fall vielen dank für eure hilfe.

    Edit: Entschuldigt den Doppelpost war ungewollt.



  • Ich habe mir jetzt zu diesem Zweck dieses Werk bestellen:
    http://www.galileocomputing.de/katalog/buecher/titel/gp/titelID-1278

    Das sollte meine Probleme in dieser Hinsicht lösen. Mal sehen was ich jetzt mache. Auf jeden fall vielen dank für eure hilfe.


Anmelden zum Antworten