• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

pętla powoduje zwieszenie programu

Aruba Cloud PRO i VPS, Openstack, VMWare, MS Hyper-V
0 głosów
178 wizyt
pytanie zadane 3 stycznia 2022 w C i C++ przez RufinB Obywatel (1,810 p.)
void MojaKlasa::usun_ucznia() {
    cout << "Podaj nr dziennika:";
    int numer;
    cin >> numer;
    for (std::vector<Uczen>::iterator temp = tab.begin(); temp < tab.end(); temp++) {
        if (temp->nr_dziennika == numer)
            tab.erase(temp);
    }
    zapisz_z_pliku();
}
komentarz 3 stycznia 2022 przez Oscar Nałogowiec (29,050 p.)

Zwykle warunkiem kontynuacji pętli jest: iterator != kontener.end(). Dla vectora może zadziała <, ale tak bardziej uniwersalnie jest !=.

Po wykonaniu erase() (ogólnie modyfikacji struktury kontenera) iterator jest już nieważny i nie możesz kontynuować. Samo erase natomiast zwraca poprawiony iterator. Można zrobić pętle w której jeśli dany element chcesz usunąć robisz erase zamiast ++.

 

komentarz 3 stycznia 2022 przez j23 Mędrzec (193,580 p.)
for (auto temp = tab.begin(); temp != tab.end();) {
    if (temp->nr_dziennika == numer)
        temp = tab.erase(temp);
    else ++temp;
}

Lub zgodnie z idiomem erase-remove:

auto it = std::remove_if(tab.begin(), tab.end(), [numer] (const Uczen& u) {
        return u.nr_dziennika == numer;
    });

tab.erase(it, tab.end());

 

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 126 wizyt
pytanie zadane 12 października 2017 w Sprzęt komputerowy przez VirtualMember Pasjonat (15,790 p.)
0 głosów
0 odpowiedzi 138 wizyt
pytanie zadane 18 listopada 2021 w Sprzęt komputerowy przez oscarzasty Nowicjusz (220 p.)
+1 głos
2 odpowiedzi 289 wizyt

91,832 zapytań

140,506 odpowiedzi

316,998 komentarzy

61,163 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...