Problem z dynamicznym dodawaniem obiektów do vectora
Ostatnio zmodyfikowano 2014-12-01 10:19
dek12 Temat założony przez niniejszego użytkownika |
Problem z dynamicznym dodawaniem obiektów do vectora » 2014-11-27 20:56:42 siema, mam sobie klasę np: class test { public: int liczba1, liczba2; test( int a, int b ) { liczba1 = a; liczba2 = b; } };
Teraz tworzę wektor std::vector < std::unique_ptr < test >> Test;
I teraz w pętli chciałbym tworzyć nowy obiekt klasy test i dodawać go do wektora, jak to zrobić? for( int i = 0; i < 5; i++ ) Test.push_back( new < test > a( 12, 24 ) );
To nie działa, możecie coś pomóc? |
|
Monika90 |
» 2014-11-27 21:26:05 jeżeli masz dostatecznie nowy kompilator, zrób tak: Test.push_back( std::make_unique < test >( 12, 24 ) );
a jak nie masz, to tak: Test.push_back( std::unique_ptr < test >( new test( 12, 24 ) ) );
|
|
NopeDotAvi |
» 2014-11-27 21:30:07 też dobrym sposobem jest utworzenie funkcji: int dodajDoWektora( int x, int y ) { std::unique_ptr < Test > test( new Test( x, y ) ); wektor.push_back( std::move( test ) ); }
|
|
dek12 Temat założony przez niniejszego użytkownika |
» 2014-11-27 23:21:02 Dziękuje, działa. A jeszcze jedno pytanko. Jak teraz dodać do tego wektora obiekt który został utworzony w kodzie wcześniej? Tak jak bym miał wcześniej test a( 2, 20 ); i gdybym miał taki wektor: std::vector < test > Test; to po prostu push.back, ale jak już teraz przerobiłem na: std::vector < unique_ptr < test >> Test; to jak teraz dodać te obiekt a? |
|
dek12 Temat założony przez niniejszego użytkownika |
» 2014-11-28 21:28:45 poradzicie coś? |
|
Monika90 |
» 2014-11-28 21:39:10 kopię istniejącego oiektu a można dodać Test.push_back( std::make_unique < test >( a ) );
albo tak Test.push_back( std::unique_ptr < test >( new test( a ) ) );
|
|
NopeDotAvi |
» 2014-11-28 21:57:28 jeżeli ten wcześniej utworzony obiekt jest unique_ptr (nie wiedziałem jak to lepiej opisać) to zrób tak: wektor.push_back( std::move( a ) ); |
|
dek12 Temat założony przez niniejszego użytkownika |
» 2014-11-30 15:03:58 A gdy mam typ unique_ptr to muszę jeszcze jakoś ręcznie usuwać obiekt? Czy unique sam dba o czyszczenie śmieci? |
|
« 1 » 2 |