ho una variabile membro della classe in questo modo:Come rilasciare std :: vector se non c'è memoria heap
vector<vector<int> > m_stacks;
Quando io popolo, lo faccio in questo modo:
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);
Ora Mi chiedo cosa dovrei fare nel distruttore di classe per rilasciare m_stacks
. Non alloco memoria di heap per questo, quindi sto lottando se ho davvero bisogno di fare qualcosa. Infine vengo questo -
vector<vector<int> >::iterator itr = m_stacks.begin();
for (; itr != m_stacks.end(); ++itr) {
itr->clear();
}
Penso che questo sia il più ho bisogno di fare, non ho bisogno di chiamare m_stacks.clear()
. Il motivo è che il distruttore del vettore può rilasciare automaticamente la memoria. Ma ho ancora bisogno del codice di cui sopra, la ragione è che il distruttore del vettore non chiama il distruttore del suo elemento.
Confermare la mia chiamata?