Sobes.tech
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:

  1. Ellenőrizzük, hogy a jelenleg kiosztott memória elegendő-e az új elem számára.
  2. Ha van elég hely, az elemet hozzáadjuk a tömb végéhez.
  3. 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).
  4. A meglévő elemeket másoljuk vagy mozgatjuk az új memória blokkba.
  5. A régi memória blokk felszabadul.
  6. 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.