Löschen im zwei-dimensionalen Container Vector



  • Hallo,

    habe ein zwei-dimensionales Vector-Gebilde mit int-Zahlen:
    vector < vector<int> > region;

    Möchte jetzt nicht einen einzigen int-Wert löschen, sondern eine ganze Reihe an int-Werten, die in einem Vektor stehen. Also z.b. den Vektor[2] löschen, in dem die Werte Vektor[2][0],Vektor[2][1],Vektor[2][2],Vektor[2][3],etc. drin stehen.

    Wie kann man das machen ? Geht das überhaupt ? Wird die Lücke dann geschlossen, oder sollte ich eine andere Container-Klasse verwenden?

    Habs schon mit dem Iterator versucht
    Vektor.erase(pos) aber hat er nicht akzeptiert.

    danke



  • Diese lösung gilt jetzt für std::vector<> aber es gibt Container bei denen das nicht aufgrund der iterator eigenschaften funktioniert.

    Vektor.erase( Vektor.begin() + pos);
    


  • Hmmm,

    bei mir bringt er den Fehler:

    Zwei Zeiger koennen nicht addiert werden

    für die Zeile:

    Vektor.erase( Vektor.begin() + pos);
    


  • pos sollte auch ne zahl sein, und kein iterator

    Oder was ist pos bei dir?

    typedef std::vector< std::vector<int> > VecType;
    
    VecType vec( 3 , std::vector<int>( 3, 10 ) );  // 3x3 mit jeweils 10 als wert
    
    vec.erase( vec.begin() + 1 ); //  <-- so meine ich das
    


  • Ja,
    pos war bei mir Iterator.
    Ausgezeichnet. Funktioniert jetzt so, wie ich´s wollte. 🙂

    vielen dank 👍


Anmelden zum Antworten