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

Std::vector wskaźników. Trzeba usuwać wszystkie elementy za pomocą delete?

Ostatnio zmodyfikowano 2015-08-23 19:59
Autor Wiadomość
nano-stalker
Temat założony przez niniejszego użytkownika
» 2015-08-23 00:05:43
To chyba mało ważne ale:
C/C++
class Log
{
    fstream file;
    void adres( string nowyAdres ) { file.open( nowyAdres ); };
   
    void dodajWpis( string wpis ) { file << wpis }; // tej metody używałby Logger dla każdego obiektu w vector'rze
};
Taka mała i króciutka wersja ale w pełni pokazuje co chcę uzyskać :) Biorąc po uwagę wcześniejszy wpis. To znaczy, że mam jednak użyć unique_prt w vector'rze tak? :) dzięki.
P-136765
pekfos
» 2015-08-23 12:47:21
To znaczy, że mam jednak użyć unique_prt w vector'rze tak? :)
To znaczy, że nie wolno ci użyć unique_ptr<>, ani delete.
C/C++
Log jakis_log; // tworze obiekt Log'a
//..
logger.dodajLog( & jakis_log ); // dodaje wskaznik do tego log'a do vectora
Nie ma wycieku pamięci, jakis_log jest niszczony automatycznie po wyjściu ze swojego zakresu. Nie możesz tego ręcznie usuwać.

vector<std::string>::push_back nie tworzy kopii.
A co tworzy?
P-136780
notabigthreat
» 2015-08-23 17:16:21
@UP:
C/C++
cout << is_nothrow_constructible < string, string &&>::value;

Jeśli masz wiadro pełne wody i przelewasz zawartość do innego - kopiujesz?
P-136793
pekfos
» 2015-08-23 17:23:06
Jeśli masz wiadro pełne wody i przelewasz zawartość do innego - kopiujesz?
Kopiuję, bo mam w efekcie 2 wiadra wody. push_back wcale nie musi przenosić, to zależy od rodzaju przekazanej wartości. Ogólne stwierdzenie, że push_back nie tworzy kopii, to wprowadzanie w błąd.
P-136795
notabigthreat
» 2015-08-23 18:10:14
Zgadzam się, że jedna kopia wykonuje się, jeśli jej potrzebujemy. Myślałem (źle?) o tych elementach, które już się znajdują w kontenerze.
P-136798
nano-stalker
Temat założony przez niniejszego użytkownika
» 2015-08-23 19:59:02
Dobrze. Dzięki za pomoc, będę musiał to jeszcze przemyśleć. Za każdym razem zdaję sobie sprawę jak niewiele umiem, oraz na jak wiele istotnych rzeczy nie zwracam uwagi... Dzięki jeszcze raz.
P-136803
1 « 2 »
Poprzednia strona Strona 2 z 2