Как освободить std :: vector, если нет динамической памяти

У меня есть такая переменная-член класса:

vector<vector<int> >  m_stacks;

Когда я заполняю ее, мне это нравится:

vector<int> v;
v.push_back(1);
v.push_back(2);
m_stacks.push_back(v);
vector<int> v2;
v2.push_back(1);
v2.push_back(2);
m_stacks.push_back(v2);

Теперь мне интересно, что мне делать в деструкторе класса выпустить m_stacks . Я не выделяю для него кучу памяти, поэтому я борюсь, действительно ли мне нужно что-то делать. Наконец, я подхожу к следующему -

vector<vector<int> >::iterator itr = m_stacks.begin();
for ( ; itr != m_stacks.end(); ++itr) {
  itr->clear();
}

Я думаю, что это самое большее, что мне нужно сделать, мне не нужно вызывать m_stacks.clear () . Причина в том, что деструктор вектора может автоматически освобождать память. Но мне все еще нужен приведенный выше код, потому что деструктор вектора не вызывает деструктор своего элемента.

Не могли бы вы подтвердить мой звонок?

6
задан Chris says Reinstate Monica 2 November 2011 в 16:44
поделиться