2011-02-04 13 views
25

Zastanawiam się, czy są jakieś różnice między boost::shared_ptr i std::shared_ptr znalezione w standardowym pliku <memory>.Różnica między boost :: shared_ptr i std :: shared_ptr ze standardowego pliku <memory>

+0

To zależy od twojej implementacji. – robert

+0

@robert Czy można ich używać zamiennie? Próbuję wdrożyć ten http://stackoverflow.com/questions/3559412/how-to-store-different-data-types-in-one-list-c/3560884#3560884 – Pepe

+1

@ P.R. - 'std :: shared_ptr' jest formą C++ 0x' tr1 :: shared_ptr', a boost 'shared_ptr' powinno zachowywać się tak samo: http://stackoverflow.com/questions/3831572/differences-between-tr1shared- ptr-and-boostshared-ptr – birryree

Odpowiedz

19

std::shared_ptr jest formularzem C++ 0x z tr1::shared_ptr, a funkcja wzmocnienia boost::shared_ptr powinna zachowywać się tak samo.

Jednak std::shared_ptr, w realizacji, że jest zgodny ze standardem C++ 0x, powinien/może mieć większą wygodę na zachowanie klasy shared_ptr, jak opisano w poniższych linków:

The shared_ptr jest wskaźnikiem zliczającym odniesienia, który działa jak najwięcej jak zwykły wskaźnik danych C++. W implementacji TR1 brakowało pewnych funkcji wskaźnika, takich jak aliasing i arytmetyka wskaźnika, ale wersja C++ 0x doda je.

Choć z szybkim pobieżny rzut oka nie widzę operator+ i podobne operacje arytmetyczne typu shared_ptr.

Powiązane problemy