Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Dodawanie forem obiektów klasy do kontenera vector i późniejsze ich usuwanie

Ostatnio zmodyfikowano 2014-06-29 23:37
Autor Wiadomość
bingo009
Temat założony przez niniejszego użytkownika
Dodawanie forem obiektów klasy do kontenera vector i późniejsze ich usuwanie
» 2014-06-29 22:12:04
Witam was serdecznie, ostatnio naszła mnie pewna wątpliwość - w jaki sposób dodawać dużo obiektów do kontenera vector? Mam klasę Object i utworzony vector przechowujący objekty tejże klasy. Teraz chcąc dodać np. 30 obiektów typu Object napisałbym tak:
C/C++
for( int i = 0; i < 30; i++ ) {
    Object newobject;
    objects.push_back( newobject );
}

Czy taki kod jest prawidłowy i nie doprowadzi do wycieku pamięci? Z tego co się orientuje, to chyba deklaracja w forze to nie jest dobry pomysł, a tu aż 30 razy deklaruje objekt klasy Object. Jak ten kod jest niewłaściwy to jak mam to robić właściwie? Do usuwania stosuje metodę clear klasy vector, która usuwa z niego całą zawartość.
P-112949
Glazus
» 2014-06-29 22:54:35
Z tego co się orientuje, to chyba deklaracja w forze to nie jest dobry pomysł
Czemu?  
P-112954
bingo009
Temat założony przez niniejszego użytkownika
» 2014-06-29 23:00:53
Ponieważ for wykonuje się ileś razy i ileś razy zrobi deklarację tego samego obiektu, co chyba nie jest zbyt dobre, może i się myle, bo dopiero się uczę pisać obiektowo.
P-112957
Glazus
» 2014-06-29 23:04:58
Poczytaj o czasie życia zmiennych.
P-112958
bingo009
Temat założony przez niniejszego użytkownika
» 2014-06-29 23:17:22
Z tego co wyczytałem, to zmienna lokalna jest niszczona po zakończeniu bloku kodu, w którym jest, więc to chyba odpowiedź na moje pytanie. Taka zmienna jest niszczona po każdym obiegu pętli for?
P-112960
Monika90
» 2014-06-29 23:19:01
Można wyeliminować tę zmienną
C/C++
for( int i = 0; i < 30; i++ ) {
    objects.emplace_back();
}
ale w sumie co to za różnica?
P-112961
bingo009
Temat założony przez niniejszego użytkownika
» 2014-06-29 23:37:39
Takiej odpowiedzi oczekiwałem, czyli jak jest dobrze, to niech tak zostanie jak w pierwszym poście. Dziękuje bardzo za pomoc.
P-112962
« 1 »
  Strona 1 z 1