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