Разница между буст-контейнерами ptr и обычными контейнерами?

0

В чем разница между использованием контейнеров boost ptr и контейнеров, содержащих интеллектуальные указатели?

class A {} 

// ptr containers:
boost::ptr_unordered_map<int, A> p;

// containers:
boost::unordered_map<int, boost::intrusive_ptr<A>> m;
  • 3
    Я откатил последнюю версию. Если у вас есть новый вопрос, задайте новый вопрос . Неправильно редактировать вопрос, чтобы лишить законной силы существующие ответы.
Теги:
boost

1 ответ

1
Лучший ответ

boost::ptr_unordered_map не имеет служебных затрат на подсчет ссылок, которые будут понесены в контейнере boost::shared_ptr<A>

Он также не требует дополнительного интерфейса объекта A который boost::intrusive_ptr<A> требования boost::intrusive_ptr<A>.

Это делает его хорошим решением для управления выделенными кучами объектами, которые не требуют подсчета ссылок для содержащихся объектов.

  • 0
    Просто любопытно, почему вы думаете, что они не сделали специализацию шаблона для boost::unordered_map<int, boost::shared_ptr<A>> ?
  • 0
    @NickStrupat Я подозреваю, что это потому, что этот тип может требовать или не требовать подсчета ссылок для общих указателей, вставленных в контейнер. Неявно не известно, существуют ли другие указатели на объекты в другом месте.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню