Я думаю, вы должны использовать std::vector::clear
:
vec.clear();
EDIT:
Не очищает, уничтожить элементы
удерживается вектором?
Да, это так. Он вызывает деструктор каждого элемента в векторе перед возвратом памяти. Это зависит от того, какие «элементы» вы храните в векторе. В следующем примере я храню объекты сами по себе в векторе:
class myclass
{
public:
~myclass()
{
}
...
};
std::vector<myclass> myvector;
...
myvector.clear(); // calling clear will do the following:
// 1) invoke the deconstrutor for every myclass
// 2) size == 0 (the vector contained the actual objects).
Если вы хотите разделить объекты между различными контейнерами, например, вы можете хранить указатели на них. В этом случае, когда вызывается clear
, освобождается только память указателей, фактические объекты не затрагиваются:
std::vector<myclass*> myvector;
...
myvector.clear(); // calling clear will do:
// 1) ---------------
// 2) size == 0 (the vector contained "pointers" not the actual objects).
Для вопроса в комментарии, я думаю, getVector()
определяется следующим образом:
std::vector<myclass> getVector();
Может быть, вы хотите вернуть ссылку:
// vector.getVector().clear() clears m_vector in this case
std::vector<myclass>& getVector();