Все мы знаем, что указатели RAW должны быть обернуты в некую форму интеллектуального указателя, чтобы обеспечить безопасное управление памятью при исключениях. Но когда дело доходит до контейнеров указателей, проблема становится еще более острой.
Контейнеры std настаивают на том, чтобы содержащийся объект был копируемым, поэтому это исключает использование std :: auto_ptr, хотя вы все равно можете использовать boost :: shared_ptr и т. Д.
Но есть также несколько повышающих контейнеров, специально предназначенных для безопасного хранения указателей:
См. Библиотека контейнеров указателей
Возникает вопрос: при каких условиях мне лучше использовать ptr_containers вместо контейнера smart_pointers?
boost::ptr_vector<X>
or
std::vector<boost::shared_ptr<X> >