清除ptr_array

时间:2011-03-23 06:20:08

标签: c++ boost

我想清除ptr_array

boost::ptr_array<A, 10> a;
...
a.clear();  // missing

如何清洁ptr容器?

2 个答案:

答案 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;
}