[Gelöst] Vector::push_back - "free space" anpassen



  • Hallöchen,

    ich implementiere gerade mit einem Buch eine Kopie des std::vector (oder etwas ähnliches) und bin nun bei push_back angelangt.

    Das ist so dargestellt:

    void Vector::push_back(double d)
    {
        if (!space) reserve(8);
        else if (sz == space) reserve(2 * space);
        elem[sz] = d;
        ++sz;
    }
    

    Scheint erstmal ganz logisch zu sein. Aber dann frage ich mich: Wenn ich die Größe um 1 erhöhe, muss ich dann nicht den noch freien Platz um 1 verringern? Also ca. so:

    void Vector::push_back(double d)
    {
        if (!space) reserve(8);
        else if (sz == space) reserve(2 * space);
        elem[sz] = d;
        ++sz;
        --space;  // Ein freier Platz weniger
    }
    

    Würd mich freuen, wenn mich jemand da aufklärt.

    lg



  • space ist in deinem Fall, wenn ich das richtig verstehe, nicht der freie Platz sondern der absolut verfügbare. Daher wohl sicherlich nicht. Aber ohne den Code zu kennen kann man dies nicht wirklich sagen.



  • Beim Programmieren sind passende Namen sehr wichtig.

    Die richtigen Namen wären size/capacity anstatt sz/space.
    Dann ist klar, was sie bedeuten: size ist die Anzahl belegter Plätze, capacity ist die gesamte Anzahl Plätze, belegt und frei.



  • danke Leute, ich glaub das ist es, hab ich ein Denkfehler.
    lg


Anmelden zum Antworten