uczę się o inteligentnych wskaźników (std::auto_ptr
) i po prostu czytać here i here że inteligentne wskaźniki (std::auto_ptr
) nie należy umieszczać w pojemnikach (tj std::vector
), ponieważ nawet większość kompilatory nie będzie narzekać i mogłoby się wydawać poprawne. Nie ma reguły, która mówi, że inteligentne wskaźniki nie będą kopiowane wewnętrznie (na przykład przez klasę vector
) i przenoszą własność, wtedy wskaźnik stanie się NULL. W końcu wszystko będzie spieprzone.Inteligentne wskaźniki w pojemniku takim jak std :: vector?
W rzeczywistości, jak często to się dzieje?
Czasami mam wektory wskaźników i jeśli w przyszłości zdecyduję, że chcę mieć wektor inteligentnych wskaźników, jakie byłyby moje opcje?
Jestem świadomy C++ 0x i Boost bibliotek, ale na razie wolałbym trzymać się podejścia STL.
Istnieją również inteligentne wskaźniki w std :: tr1 (std :: tr1 :: shared_ptr) –
Nie nazwałbym "auto_ptr" inteligentnym wskaźnikiem :) To naprawdę głupie, dlatego większość porad dotyczących inteligentnych wskaźników nie może (niestety) należy do niego zastosować (ze względu na jego skręconą semantykę kopiowania). –