Я думаю, вам следует использовать std::vector::clear:
vec.clear();
РЕДАКТИРОВАТЬ:
Не очищает ли разрушает элементы, содержащиеся в векторе?
Да. Он вызывает деструктор каждого элемента в векторе перед возвратом памяти. Это зависит от того, какие «элементы» вы храните в векторе. В следующем примере я сохраняю сами объекты внутри вектора:
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();
person
AraK
schedule
06.10.2009