Junior — Middle
Vektör türündeki dinamik diziye yeni bir öğe eklendiğinde hangi işlemler gerçekleştirilir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Bir std::vector türündeki dinamik diziye yeni bir öğe eklendiğinde aşağıdaki işlemler gerçekleştirilir:
- Mevcut tahsis edilen belleğin yeni öğeyi barındırmak için yeterli olup olmadığı kontrol edilir.
- Eğer yeterli alan varsa, öğe dizinin sonuna eklenir.
- Bellek yetersizse, daha büyük boyutta yeni bir bellek bloğu (genellikle mevcut boyutun 1.5-2 katı) tahsis edilir.
- Mevcut öğeler kopyalanır veya taşınır yeni bellek bloğuna.
- Eski bellek bloğu serbest bırakılır.
- Yeni öğe dizinin sonuna eklenir.
Örnek:
std::vector<int> v = {1, 2, 3};
v.push_back(4); // 4 öğesini ekler
Bu mekanizma, bellek yeniden tahsisleri olmasına rağmen, ekleme işlemi için amortize edilmiş sabit zaman karmaşıklığı sağlar.