Очистить ptr_array - PullRequest
       3

Очистить ptr_array

0 голосов
/ 23 марта 2011

Я хочу очистить ptr_array

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

Как очистить контейнер ptr?

Ответы [ 2 ]

1 голос
/ 23 марта 2011

Он должен вести себя как массив, и вы не можете очистить массив в C++.Единственное, что вы можете сделать, это установить отдельные элементы в NULL.

0 голосов
/ 23 марта 2011

Согласно краткому описанию класса , вызов a.release(); сделает свое дело, так как документы утверждают, что постусловие вызова release состоит в том, что "все указатели равны нулю".

Действительно, взгляд на реализацию подтверждает это, хотя он менее эффективен, чем строго возможный, поскольку включает в себя неиспользованное / потраченное (для ваших целей) выделение кучи:

std::auto_ptr<this_type> release()
{
    std::auto_ptr<this_type> ptr( new this_type );
    this->swap( *ptr );
    return ptr;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...