У меня есть переменная-член класса, подобная этой:
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()
. Причина в том, что деструктор вектора может автоматически освободить память. Но мне все еще нужен приведенный выше код, причина в том, что деструктор вектора не вызывает деструктор его элемента.
Не могли бы вы подтвердить мой звонок?