假设我有一个 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;
如果我向 map 添加一个新的 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替换后会不会被释放?我很确定会这样,但我认为值得询问/分享。
最佳答案
首先,您的问题标题说的是 boost::auto_ptr,但您实际上是指 boost::shared_ptr
是的,原始指针将被释放(如果没有对它的进一步共享引用)。
关于c++ - boost::shared_ptr 标准容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/140033/