【发布时间】:2015-01-03 20:40:33
【问题描述】:
我已将共享指针类型定义为:typedef shared_ptr<Myclass> Sptr;
然后是一个向量:vector<Sptr> vectr;
现在我已经在一个向量中存储了几个共享指针,每个都指向一个动态分配的内存。
现在我想删除向量中的特定元素(子项)(children.begin() 到 children.end())。
ItemList::iterator it = find(children.begin(), children.end(), child);
if (it != children.end())
{
//delete it;
it = children.erase(it);
}
现在 children.erase(it),这将删除共享指针内的指针动态分配和指向的内存。 (只有向量中的共享指针指向动态内存,即计数为 1)
提前致谢。
【问题讨论】:
-
你的意思是
typedef shared_ptr<Myclass> Sptr;而不是typedef shared_ptr<Myclass*> Sptr;? -
@billz 对不起,它 typedef shared_ptr
Sptr. -
谢谢.. 如果我喜欢下面的 vectr[index] = sharedPtr; 还有一件事索引处的旧值会被删除吗??
标签: c++ vector shared-ptr