Junior — Middle
Aké akcie sa vykonávajú pri pridávaní nového prvku do dynamického poľa typu vector?
sobes.tech AI
Odpoveď od AI
Pri pridavanju novog elementa u dinamički niz tipa std::vector, sledeće radnje se obavljaju:
- Proverava se da li je trenutno dodeljena memorija dovoljna za novi element.
- Ako ima dovoljno mesta, element se dodaje na kraj niza.
- Ako memorija nije dovoljna, dodeljuje se novi blok memorije veće veličine (obično 1.5 do 2 puta veće od trenutne).
- Postojeći elementi se kopiraju ili pomeraju u novi blok memorije.
- Stari blok memorije se oslobađa.
- Novi element se dodaje na kraj.
Primer:
std::vector<int> v = {1, 2, 3};
v.push_back(4); // dodaje element 4
Ovaj mehanizam obezbeđuje amortizovanu konstantnu složenost dodavanja elemenata, uprkos mogućim redistribucijama memorije.