我想清除ptr_array
boost::ptr_array<A, 10> a;
...
a.clear(); // missing
如何清洁ptr容器?
答案 0 :(得分:1)
它应该表现得像一个数组,你无法清除C++
中的数组。您唯一能做的就是将各个元素设置为NULL。
答案 1 :(得分:0)
根据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;
}