Jak usuwać elementy z seta?

0

Witam ma taki problem mam petle która przechodzi seta i usuwam w nim i dodaje rzeczy
przy wyrzuceniu i nastepnym iterecji program craszuje sie pomocy

Oto fragment kodu

for(it=tab.begin();it!=tab.end();++it){
    int c,d;
    c=(*it).first;
    d=(*it).second;
    if(d>=a&&d<b){
        tab.insert(make_pair(c,b));
        tab.erase(*it);
        a=min(c,a);
        czy=1;
    }
    else if(c<=b&&a<c){
        tab.insert(make_pair(a,d));
        tab.erase(*it);
        b=max(b,d);
        czy=1;
    }
}
0

Nie możesz zmieniać wielkości kolekcji gdy po nim iterujesz. Twórz nowa a stara skasuj (najlepsza jest funkcja co będzie zwracać nowa kolekcje

2

Zarówno insert jak i erase zwracają iteratory. Iterator do usuniętego elementu nie jest poprawny i jakiekolwiek operacje na nim (np. inkrementacja) to UB. Opisz co chcesz zrobić, bo nie chce mi się zgadywać z kodu.

0

jesli zachodzi warunek scalic przedzialy i wrzucic do seta i wyrzucic ten z ktory scalałem je

1 użytkowników online, w tym zalogowanych: 0, gości: 1