C++ 使用作用域\u ptr擦除std::map中的项

C++ 使用作用域\u ptr擦除std::map中的项,c++,scoped-ptr,C++,Scoped Ptr,在具有作用域的\u ptr的std::map中删除项是否安全?莉儿 std::map<std::string, boost::scoped_ptr<CFoo*>> lmap; boost::scoped_ptr<CFoo> item1(new CFoo); boost::scoped_ptr<CFoo> item2(new CFoo); lmap["item1"] = item1; lmap["item2"] = item2; std::m

在具有作用域的\u ptr的std::map中删除项是否安全?莉儿

std::map<std::string, boost::scoped_ptr<CFoo*>> lmap;

boost::scoped_ptr<CFoo> item1(new CFoo);
boost::scoped_ptr<CFoo> item2(new CFoo);

lmap["item1"] = item1;
lmap["item2"] = item2;


std::map<std::string, boost::scoped_ptr<CFoo*>>::iterator iter;
iter = lmap.find("item1");
lmap.erase(iter)
std::map-lmap;
boost::作用域的ptr item1(新的CFoo);
boost::作用域的ptr项2(新的CFoo);
lmap[“项目1”]=项目1;
lmap[“项目2”]=项目2;
std::map::迭代器iter;
iter=lmap.find(“项目1”);
lmap.擦除(iter)

谢谢

这甚至不应该编译。你的意思可能是
scoped_ptr
。scoped_ptr可复制吗?不,你不能复制
scoped_ptr
。我想得越久,我就越想知道这种方法是否是解决任何问题的明智方法。为什么不使用
地图
CFoo
是不是太大以至于会引起麻烦?