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