2012-04-17 4 views
1

В чем разница между VS2010 std::shared_ptr и boost::shared_ptr?Различия между VS2010's std :: shared_ptr и boost :: shared_ptr

Являются ли реализации практически одинаковыми? Или существуют существенные различия?

Что является наиболее эффективным/оптимизированным?

Спасибо.

+0

Почему бы не взглянуть на исходный код? – Nick

+3

Есть различия. Как мы узнаем, насколько они важны для вас? –

+1

@Nick: В общем, исходные коды Boost и STL C++ не являются тривиальными для чтения (иногда они являются [только для чтения/только для записи кода] (http://blogs.msdn.com/b/larryosterman/archive/2011) /09/27/read-only-and-write-only-computer-languages.aspx)). Я рассматриваю их больше как черные ящики. –

ответ

1

VS2010's shared_ptr - осуществление соответствует (или, по крайней мере, пытаясь соответствовать) C++ 11 стандарт.

boost::shared_ptr, с другой стороны, был разработан ранее, и как часть стандартной, а не стандартной библиотеки C++. Я считаю, что оба они достаточно эффективны для использования в производстве, но использование boost повышает эффективность использования boost;). Что в некоторых случаях совершенно неприемлемо.

+0

с использованием Boost не проблема (есть и другие библиотеки Boost, которые могут пригодиться и не присутствуют в VS2010 std: :). И AFAIK можно использовать Boost в коммерческих продуктах (исправьте меня, если я ошибаюсь). –

+1

FWIW, в VS2008 tr1 :: shared_ptr реализация была ошибкой (хотя кажется, что в VS2010 они исправили эту ошибку): http://connect.microsoft.com/VisualStudio/feedback/details/488804/tr1-shared-ptr -reset-cause-crash –

+1

Его можно использовать в коммерческих продуктах, но некоторые компании (я считаю, даже Google [править]] имеют сильную политику кода против повышения и других библиотек. –

Смежные вопросы