Beliebig langs Array mit Pointern...



  • Ich weiß, dass es dafür nützliche Header gibt, aber irgendwan hab ich die Theorie gelernt, aber wieder vergessen.
    Wenn man ein Array definiert, so sind ja die die Anzahl ja definiert name[20] oder ähnlich, nun könnte man ja mit Pointern ein theoretisch unbegrenztes Array erschaffen, kann mir einer auf die Sprünge helfen und sagen wie?
    (Ich scheine bei der Suche kein Glück gehabt zu haben)



  • Vektoren, (Double) Linked-Liste etc etc...

    Wenn du nix gefunden hast, hast du net richtig gesucht oder nach den falschen Keywords.



  • Wohl die falschen Wörter, aber es geht mir mehr um die Theorie und nicht um ne header Datei, welche eine derartige Funktion impelementiert.

    Ich kann ja nen Pointer auch inkrementieren und dekrementieren, dadurch würd ich theoretisch ja ein ziemlich langes Array bekommen, aber wie verhindere ich, dass dort niemand anders was reinschreibt? Speicher belegen wäre ne Lösung, aber in dem Zuge würde es ja wieder eine Begrenzung der Arraygröße



  • Du _MUSST_ speicher reservieren wenn du dynamisch machst (was hier der Fall ist).

    Hier mal ein Bespiel für ein Vektor:

    #include <vector>
    
    std::vector<int> vec;
    
    for(int i=0; i<10; ++i) {
        vec.push_back(i*i);
    }
    
    // iteratoren sind ne art pointer für die stl
    std::vector<int>::iterator it = vec.begin();
    for(;it != vec.end(); ++it) {
        out << *it << ' ';
    }
    

    Such mal nach STL Tutorials sollte auch in der FAQ was zu finden sein.



  • Es gibt keine undefiniert grossen arrays ... naja hoechstens als fehlerquelle bei unsachgemaesser programmierung 🙂

    wie die vorgaenger schon sagten, den speicher den belegen willst, musst du reservieren ...

    hasst du zu wenig reserviert, musst du neu reservieren ... (einfach anhaengen geht nicht ... )

    Brauchst du die elemente nich zusammenhaengend ... also kein zugriff ueber index ... kannst du linked listen bauen ... wo nen block(das eigentliche element + pointer auf vorgaenger / nachfolger) einzeln reserviert werden.
    Dann kannst den ganzen speicher mit deinen elementen zumuellen 🙂 Aber auch da erreichst grenzen .

    Bei zusammenhaengenden speicher (c-Arrays) kommst an die grenzen eher, weil du keine "luecken" im speicher verwenden kannst, und fuer nen resize die alte und neue groesser struktur fuer kurze zeit gleichzeitig im speicher brauchst.

    die magischen STL-Container machens auch ned anders, kapseln dir nur die funktionalitaet, so dass du die container als sorglos-paket verwenden kannst ...

    Ciao ...


Anmelden zum Antworten