Element aus Array streichen und die anderen nachrutschen lassen?



  • Hallo,

    wollte fragen, ob es eine Möglichekeit gibt ein Element aus einem Array zu streichen, so dass die folgenden Elemente einfach "nachrutschen".

    Zur Verdeutlichung:

    ich habe etwas in der Art:

    Array[6]=[1,2,3,4,5,6];

    nunr will ich z.B. die 3 Streichen und dann noch ein Array der Form
    [1,2,4,5,6]
    haben.

    Danke schonmal für eure Hilfe, ich hoffe mir kann jemand weiterhelfen!!

    lg,
    Chrissi



  • Ja, natürlich kannst du das Programmieren. Das Array kannst du jedoch nicht verkleinern. Nimm einfach std::vector, der bietet dafür sogar eine entsprechende Methode an und verkleinert sich auch.



  • Hallo,

    am einfachsten ist sowas, indem du einen vector benutzt:

    //um bei deinem beispiel zu bleiben
    type Array[6] = {1, 2, 3, 4, 5, 6};
    std::vector<type> Vector(Array, Array+6);
    //vector enthaelt jetzt die selben elemente wie Array
    //zugriff auf vector erfolgt genauso wie zugriff auf ein array
    //loeschen von 3
    {
      std::vector<type>::iterator it = Vector.find(3);
      Vector.erase(it);
    }
    //neue reihenfolge ist jetzt: {1, 2, 4, 5, 6}
    

    Hoffe ich konnte dir helfen. Falls du es mit einem normalen Array machen
    willst, bleibt dir nichts anderes uebrig als die Elemente umzukopieren.

    mfg
    v R



  • ah danke, nein das mit dem Vektor schaut viel einfacher aus, schön das es so was gibt, darauf habe ich gehofft! 😉



  • Kann ich den Vektor auch irgendwie direkt befüllen? Also ohne vorher ein Array zu bauen?



  • CChrissi schrieb:

    Kann ich den Vektor auch irgendwie direkt befüllen? Also ohne vorher ein Array zu bauen?

    So wie in bei einem Array ist das leider nicht moeglich und jede menge push_back-
    Aufrufe zu machen, sieht auch nicht wirklich leserlich aus. Ich denke die
    Variante mit dem Array ist die schnellste und lesbarste Version. Fall du den
    Vector dynamisch erstellst, kannst du das Array in einen eigenen Block stellen,
    damit das Array beim Ende des Blocks wieder zerstoert wird.

    Mein Block oben ist uebrigens ueberfluessig. Da waren meine Tipperhaende mal
    wieder schneller als mein Kopf (was eigentlich nicht sein sollte :)).

    mfg
    v R



  • ok.. nochmals vielen Dank!

    lg,
    CHrissi



  • Kleiner Tip am Rande: "LinkedList"!!!


Anmelden zum Antworten