So che std::vector
usa un blocco contiguo di memoria, ma spesso vedo che le persone usano vettori di vettori, anche quando modificano il numero di elementi in questi vettori contenuti all'interno di un vettore esterno . Questo non porterà a problemi di efficienza quando un vettore interno deve essere ridimensionato poiché tutti i seguenti vettori dovranno spostare anche i loro elementi?
In altre parole, nel codice seguente, la crescita di lists[0]
non determinerà lo spostamento degli elementi dei 99 sub vettori che seguono anche questo, e non solo lists[0]
?
std::vector<std::vector<int>> lists;
lists.resize(100);
// use and grow sub vectors
// ...
lists[0].push_back(88); // ← !