我想清除ptr_array
boost::ptr_array<A, 10> a;
...
a.clear(); // missing如何清洗ptr容器?
发布于 2011-03-23 14:24:43
它的行为应该类似于数组,并且您不能在C++中清除数组。您可以做的唯一一件事就是将各个元素设置为NULL。
发布于 2011-03-24 03:28:34
根据class synopsis的说法,调用a.release();可以做到这一点,因为文档指出,调用release的后置条件是“所有指针都为空”。
事实上,看一眼实现就可以验证这一点,尽管它的效率低于严格意义上的可能,因为它涉及一个未使用/浪费(出于您的目的)的堆分配:
std::auto_ptr<this_type> release()
{
std::auto_ptr<this_type> ptr( new this_type );
this->swap( *ptr );
return ptr;
}https://stackoverflow.com/questions/5401536
复制相似问题