В чем разница между использованием контейнеров boost ptr и контейнеров, содержащих интеллектуальные указатели?
class A {}
// ptr containers:
boost::ptr_unordered_map<int, A> p;
// containers:
boost::unordered_map<int, boost::intrusive_ptr<A>> m;
boost::ptr_unordered_map
не имеет служебных затрат на подсчет ссылок, которые будут понесены в контейнере boost::shared_ptr<A>
Он также не требует дополнительного интерфейса объекта A
который boost::intrusive_ptr<A>
требования boost::intrusive_ptr<A>
.
Это делает его хорошим решением для управления выделенными кучами объектами, которые не требуют подсчета ссылок для содержащихся объектов.
boost::unordered_map<int, boost::shared_ptr<A>>
?