Предположим, у меня есть класс foo, и я хочу использовать std :: map для хранения некоторых boost :: shared_ptrs, например ::
class foo;
typedef boost::shared_ptr<foo> foo_sp;
typeded std::map<int, foo_sp> foo_sp_map;
foo_sp_map m;
Если я добавлю новый foo_sp на карту, но используемый ключ уже существует, будет ли существующая запись удалена? Например:
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? Я почти уверен, что так и будет, но я подумал, что стоит спросить / поделиться.