Предположим, у меня есть класс Foo, и хотите использовать зЬй :: карта для хранения некоторых подталкивания :: shared_ptrs, например:повышение :: shared_ptr стандартный контейнер
class foo;
typedef boost::shared_ptr<foo> foo_sp;
typeded std::map<int, foo_sp> foo_sp_map;
foo_sp_map m;
Если добавить новый foo_sp к map, но используемый ключ уже существует, удаляется ли существующая запись? Например:
foo_sp_map m;
void func1()
{
foo_sp p(new foo);
m[0] = p;
}
void func2()
{
foo_sp p2(new foo);
m[0] = p2;
}
Будет ли освобожден исходный указатель (p) при замене на p2? Я уверен, что так будет, но я подумал, что стоит спросить/поделиться.
Измененный вопрос - должен быть shared_ptr не auto_ptr, – Rob 2008-09-26 15:02:02
Это должно быть «должно быть» – 2011-11-17 10:30:24