Junior — Middle
Milyen műveletek történnek, amikor egy új elemet adunk hozzá a vector típusú dinamikus tömbhöz?
sobes.tech MI
Válasz az MI-től
Amikor egy std::vector típusú dinamikus tömbhöz új elemet adunk hozzá, a következő lépések történnek:
- Ellenőrizzük, hogy a jelenleg kiosztott memória elegendő-e az új elem számára.
- Ha van elég hely, az elemet hozzáadjuk a tömb végéhez.
- Ha nincs elég memória, egy nagyobb méretű új memória blokkot foglalunk (általában az aktuális méret 1,5-2 szerese).
- A meglévő elemeket másoljuk vagy mozgatjuk az új memória blokkba.
- A régi memória blokk felszabadul.
- Az új elemet a tömb végéhez adjuk.
Példa:
std::vector<int> v = {1, 2, 3};
v.push_back(4); // hozzáadja a 4-es elemet
Ez a mechanizmus amortizált állandó komplexitást biztosít az elemek hozzáadásához, még akkor is, ha memória újraelosztások történnek.