Advertisement
giGii

реаллокация в динамических массивах

Mar 13th, 2022
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.14 KB | None | 0 0
  1. "Тогда на первой реаллокации копируется 1 элемент, на второй — 2, на третьей — 4, затем — 8, 16, 32, 64, 128, 256, 512. После этих действий ёмкость массива равна 1024."
  2.  
  3. Если я правильно понял, то есть нужда записать ряд чисел в массив size = 1, 2, 3, ..., 1000.
  4.  
  5. Далее такой процесс:
  6.  
  7. 00. создаем объект capacity
  8. 0. выделяем память для capacity = <bit><bit>...<bit> = 32*<bit> = 4*<byte> - под одно число ровно.
  9.  
  10. 1. копируем 1 в capacity = 1 копирование
  11. реаллокация №1. capacity *= 2 = 8*<byte>
  12. занято 1 место = 4 <byte>/свободно 1 место = 4 <byte>
  13.  
  14. 2. копируем 1, 2 в capacity = 2 копирования
  15. реаллокация №2. capacity *= 2 = 16*<byte>
  16. занято 2 места = 8 <byte>/свободно 2 места = 8 <byte>
  17.  
  18. 3. копируем 1, 2, 3, 4 в capacity = 4 копирования
  19. реаллокация №3. capacity *= 2 = 32*<byte>
  20. занято 4 места = 16 <byte>/свободно 4 места = 16 <byte>
  21.  
  22. 4. копируем 1, 2, 3, 4, 5, 6, 7, 8 в capacity = 8 копирований
  23. реаллокация №4. capacity *= 2 = 64*<byte>
  24. занято 8 мест = 32 <byte>/свободно 8 мест = 32 <byte>
  25.  
  26. 5. копируем 1, 2, ..., 16 в capacity = 16 копирований
  27. реаллокация №5. capacity *= 2 = 128*<byte>
  28. занято 16 мест = 64 <byte>/свободно 16 мест = 64 <byte>
  29.  
  30. 6. копируем 1, 2, ..., 32 в capacity = 32 копирования
  31. реаллокация №6. capacity *= 2 = 256*<byte>
  32. занято 32 места = 128 <byte>/свободно 32 места = 128 <byte>
  33.  
  34. 7. копируем 1, 2, ..., 64 в capacity = 64 копирования
  35. реаллокация №7. capacity *= 2 = 512*<byte>
  36. занято 64 места = 256 <byte>/свободно 64 места = 256 <byte>
  37.  
  38. 8. копируем 1, 2, ..., 128 в capacity = 128 копирований
  39. реаллокация №8. capacity *= 2 = 1024*<byte>
  40. занято 128 мест = 512 <byte>/свободно 128 мест = 512 <byte>
  41.  
  42. 9. копируем 1, 2, ..., 256 в capacity = 256 копирований
  43. реаллокация №9. capacity *= 2 = 2048*<byte>
  44. занято 256 мест = 1024 <byte>/свободно 256 мест = 1024 <byte>
  45.  
  46. 10. копируем 1, 2, ..., 512 в capacity = 512 копирований
  47. реаллокация №10. capacity *= 2 = 4096*<byte>
  48. занято 512 мест = 2048 <byte>/свободно 512 мест = 2048 <byte>
  49.  
  50. 11. копируем 1, 2, ..., 1000 в capacity = 1000 копирований
  51. занято 1000 мест = 4000 <byte>/свободно 24 мест = 96 <byte>
  52.  
  53. Общее число копирований: 1 коп. + 2 коп. + 4 коп. + 8 коп. + 16 коп. + 32 коп. + 64 коп. + 128 коп. + 256 коп. + 512 коп. + 1000 коп. = 1023 коп. + 1000 коп. = 2023 копирования = 2*size.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement