bezpiecznie usuwanie z wektora stl

czestą operacją jest usuwanie elementow z wektora stl za pomocą iteratora w pętli. zeby to zrobić bezpiecznie, należy ustawic iterator na element ktory zwrocilo erase().

#define erase_iter_from_loop(iter, vec) \
iter = vec.erase(iter); \
if (iter == vec.end()) break; \
iter–;

przykład:

for (vector<x>::iterator i = y.begin(); i != y.end(); i++) {
erase_iter_from_loop(i, y);
}

5 Responses to “bezpiecznie usuwanie z wektora stl”

  1. MMalicki says:

    opakuj to makro chociaz w do{}while;

  2. admin says:

    ladny podszyw :)
    do {} while; stosuje sie w C z powodu bledu kompilatora. w C++ nie trzeba jak sie programuje z glowa.

  3. random joe says:

    ten iter- na koncu wyglada dziwnie …

  4. MMalicki says:

    nie do { } while dodaje sie po to zeby mozna bylo ladnie postawic srednik za komenda i zeby kompilator rzucil normalnym bledem jesli ktos nie postawi takiego srednika.

    druga sprawa to w stlu zalecane jest robienie preinkrementacjiu i predekrementacji a nie post – chodzi tu o sposob w jaki przeciazone sa operatory — i ++

  5. admin says:

    iter– na koncu jest tu kluczowy.

    fakt, –iter jest zalecana forma.

RSS feed for comments on this post. And trackBack URL.

Leave a Reply