Eigene Vektorklasse erstellen



  • Hallo Leute,
    ich bin am verzweifeiln. 😕
    Ich muss für mein Studium in "Visual Studio 2015" eine eigene Vektorklasse erstellen. Es darf auf keinen Fall der Stanardt-Vector verwendet werden. Es soll möglich sein ein Produkt mit mehreren Infos hinzuzufügen und zu löschen (beliebig viele Produkte).
    Hättet ihr einen Lösungsansatz/Vorschlag?

    Vielen Dank schon mal 🙂
    AnnaM.



  • AnnaM. schrieb:

    Hallo Leute,
    ich bin am verzweifeiln. 😕
    Ich muss für mein Studium in "Visual Studio 2015" eine eigene Vektorklasse erstellen. Es darf auf keinen Fall der Stanardt-Vector verwendet werden. Es soll möglich sein ein Produkt mit mehreren Infos hinzuzufügen und zu löschen (beliebig viele Produkte).
    Hättet ihr einen Lösungsansatz/Vorschlag?

    Wir helfen sicher gern bei der Lösung, aber eine Komplettlösung liefern wir nicht. Was hast du schon, wobei hast du Probleme? Genreller Tipp: sprich mal mit deinen Kommilitonen! Habt ihr keine Übungsgruppen, wo man mal auf Ideen kommen könnte?

    Ansonsten gibt es Suchmaschinen, die bestimmt vieles zu diesem Problem ausspucken. Auch wenn es arrogant klingt, selbst etwas zur Problemlösung zu tun gehört zum Studium dazu.

    PS: Stanardt ist eine kreative Falschschreibung für Standard 😉



  • Danke für deine schnelle Antwort. Wir sind leider erst im ersten Semester und haben daher sehr wenig Wissen.
    Sorry wegen dem Rechtschreibfehler 🙄
    Wir wissen, dass wir ein dynamisches Array brauchen um die Produkte dynamisch speichern zu können. Einen „Warenkorb“, indem wir verschiede Produkte eingeben und spezifizieren können, haben wir erstellt und dieser funktioniert auch so weit. Jetzt geht es noch um die Speicherverwaltung. Da kommen wir leider überhaupt nicht weiter. Google hilft uns da leider auch nicht weiter, da oft mit der fertigen Vektorklasse programmiert wird.
    LG



  • Bin auch noch recht neu,
    aber müsste das nicht mit #include <vector> und dann mit der enthaltenen push_back Funktion gehen? Die ist doch genau dafür da, Elemente zur Laufzeit dynamisch anzuhängen.



  • Feldscher schrieb:

    Bin auch noch recht neu,
    aber müsste das nicht mit #include <vector> und dann mit der enthaltenen push_back Funktion gehen? Die ist doch genau dafür da, Elemente zur Laufzeit dynamisch anzuhängen.

    Ja, so würden wir es auch hin bekommen aber diese dürfen wir leider nicht verwenden. Genau das sollen wir selbst programmieren.
    Trotzdem Danke 🙂



  • ok, Ansatz:

    Erstelle in deiner Klasse Platz auf dem Freispeicher. Nimm irgendeine initiale Größe, z.B. für 4 Elemente deines Zieltyps. Du musst nun speichern, wie viele Elemente in deinem Array wirklich drin sind und wie groß die Kapazität ist. Bis zur Kapazität kannst du diese Elemente nun einfügen, wenn mehr kommen, musst du dir mehr Speicher holen und die Daten umkopieren.



  • wob schrieb:

    ok, Ansatz:

    Erstelle in deiner Klasse Platz auf dem Freispeicher. Nimm irgendeine initiale Größe, z.B. für 4 Elemente deines Zieltyps. Du musst nun speichern, wie viele Elemente in deinem Array wirklich drin sind und wie groß die Kapazität ist. Bis zur Kapazität kannst du diese Elemente nun einfügen, wenn mehr kommen, musst du dir mehr Speicher holen und die Daten umkopieren.

    Unser Ansatz: int groeße=1;
    int x = 0;
    int *speicherplatz = new int[groeße];
    speicherplatz[groeße] = x;
    //Pointer der auf x zeigt
    int *merker=&x;
    groeße++;
    //Zweites Array erstellen
    int *neuerspeicherplatz=new int[groeße];
    //Werte übertragen und neuen Wert hinzufügen
    ???
    //Speicherplatzreservierung wird aufgehoben
    //Nach Übertragung der Werte altes Array löschen
    delete[] speicherplatz;



  • Wo ist das ein Ansatz? Das sind ein paar Zeilen Code!

    Wo ist die Klassendefinition? Für welche Funktion soll der Code sein? Du benutzt außerdem keine Code-Tags.

    Und das hier:

    int *speicherplatz = new int[groeße]; 
    speicherplatz[groeße] = x;
    

    ist definitiv falsch. Überleg mal, warum!

    Und benutze keine Umlaute in Variablennamen. (außerdem ist "groeße" mit halb ersetzten Sonderzeichen merkwürdig)



  • Schau mal hier
    http://www.stroustrup.com/Programming/lecture-slides.html
    insbesondere CH17-CH19

    Das sollte als grundlegender Ansatz IMHO ganz gut sein. Oder einfach mal mit der Suchmaschine deines Vetrauens nach "C++ create vector class" oder dergleichen suchen. Da wirst Du sogar zu viel finden.

    P.S.: Ich beneide euch darum, dass eure Profs überhaupt die Existenz von vector zur Kenntnis nehmen. Bei mir im 1. Semester gabs C mit cout und handgeschriebene singly linked lists 🙄


Log in to reply