Класс STL для указателей с подсчетом ссылок? - PullRequest
12 голосов
/ 17 марта 2009

Это должно быть тривиально, но я не могу найти его (если такой класс не существует!)

Что такое класс STL (или набор классов) для умных указателей?

UPDATE

Спасибо за ответы,
Должен сказать, я удивлен, что стандартной реализации нет.

Я закончил тем, что использовал это: http://archive.gamedev.net/reference/articles/article1060.asp

Ответы [ 5 ]

14 голосов
/ 17 марта 2009

За исключением уже упомянутого TR1 shared_ptr, в STL нет указателя с подсчетом ссылок.

Я предлагаю вам использовать boost :: shared_ptr (загрузки boost будет достаточно, компилировать нечего, его реализация только для заголовков).

Возможно, вы также захотите взглянуть на интеллектуальные указатели из библиотек Loki (опять же, реализация только с заголовками).

Обзор доступных интеллектуальных указателей см. там .

9 голосов
/ 17 марта 2009

Если вы не хотите / не можете использовать Boost и , ваш компилятор реализует TR1 , вы можете использовать shared_ptr (заимствовано из Boost):

#include <tr1/memory>

...

std::tr1::shared_ptr<Foo> ptr(new Foo);

В противном случае, нет, в vanilla STL нет умных указателей, кроме std::auto_ptr.

3 голосов
/ 22 ноября 2014

Время идет, в C ++ 11:

std::shared_ptr
std::weak_ptr

и т.д.

1 голос
/ 17 марта 2009

Для объектов COM используйте CComPtr <> .

0 голосов
/ 25 февраля 2012

Есть альтернатива, реализованная в течение некоторого времени в STL PLUS, см. В исходная кузница

"STLplus was originally intended as a library to extend the STL by providing missing container data structures such as smart-pointers, matrices, trees and graphs."

...