Mam zmienną składową klasy tak:Jak zwolnić std :: vector, jeśli nie ma pamięci sterty
vector<vector<int> > m_stacks;
Kiedy wypełnić go, robię tak:
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);
teraz Zastanawiam się, co powinienem zrobić w destruktorze klas, aby zwolnić m_stacks
. Nie przydzielam do tego pamięci sterty, więc walczę, jeśli naprawdę muszę coś zrobić. W końcu wymyślić to -
vector<vector<int> >::iterator itr = m_stacks.begin();
for (; itr != m_stacks.end(); ++itr) {
itr->clear();
}
myślę, że to jest najbardziej potrzebne do zrobienia, nie muszę zadzwonić m_stacks.clear()
. Powodem jest to, że destruktor wektora może automatycznie zwolnić pamięć. Nadal jednak potrzebuję powyższego kodu, ponieważ destruktor wektorowy nie wywołuje destruktora elementu.
Czy możesz potwierdzić moje połączenie?