Π’ соврСмСнной ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ 8 Ρ€Π°Π±ΠΎΡ‚Π° с коллСкциями Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ являСтся Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚ΠΎΠΌ для построСния слоТной бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΈ. Массив прСдставляСт собой ΠΎΠ΄Π½Ρƒ ΠΈΠ· самых простых ΠΈ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… структур Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΡƒΡŽ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ упорядочСнный Π½Π°Π±ΠΎΡ€ элСмСнтов Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ². ПониманиС ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² Ρ€Π°Π±ΠΎΡ‚Ρ‹ с этим Ρ‚ΠΈΠΏΠΎΠΌ критичСски Π²Π°ΠΆΠ½ΠΎ для любого Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°, стрСмящСгося ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΈ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ΄.

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ фиксированных структур, массивы ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ динамичСской ΠΏΡ€ΠΈΡ€ΠΎΠ΄ΠΎΠΉ: ΠΈΡ… Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π² процСссС выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±Π΅Π· нСобходимости пСрСсоздания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π˜Π½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡ Π² 1Π‘ начинаСтся с нуля, Ρ‡Ρ‚ΠΎ являСтся стандартом для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° языков программирования ΠΈ ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ пСрСнос Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ². Однако, нСсмотря Π½Π° внСшнюю простоту, Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ использованиС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² массива ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎΠΌΡƒ падСнию ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… объСмов Π΄Π°Π½Π½Ρ‹Ρ….

Данная ΡΡ‚Π°Ρ‚ΡŒΡ ΠΏΡ€ΠΈΠ·Π²Π°Π½Π° Ρ€Π°ΡΠΊΡ€Ρ‹Ρ‚ΡŒ всС Π½ΡŽΠ°Π½ΡΡ‹ взаимодСйствия с массивами: ΠΎΡ‚ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ синтаксиса Π΄ΠΎ тонкостСй ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ². ΠœΡ‹ рассмотрим Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎ, ΠΊΠ°ΠΊ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт, Π½ΠΎ ΠΈ ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ распространСнных ошибок. Π“Π»ΡƒΠ±ΠΎΠΊΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠΊΠΈ хранСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Π°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ инициализация массива

ΠŸΡ€ΠΎΡ†Π΅ΡΡ создания Π½ΠΎΠ²ΠΎΠ³ΠΎ экзСмпляра массива Π² ΠΊΠΎΠ΄Π΅ 1Π‘ ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎ прост ΠΈ ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ понятСн. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ конструктор Ρ‚ΠΈΠΏΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΡƒΡΡ‚ΡƒΡŽ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ, Π³ΠΎΡ‚ΠΎΠ²ΡƒΡŽ ΠΊ наполнСнию Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

МойМассив = Новый Массив();

ΠŸΡ€ΠΈ нСобходимости ΠΌΠΎΠΆΠ½ΠΎ сразу Π·Π°Π΄Π°Ρ‚ΡŒ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ Π΅ΠΌΠΊΠΎΡΡ‚ΡŒ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, ΡƒΠΊΠ°Π·Π°Π² количСство элСмСнтов Π² конструкторС. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ памяти, Ссли Π·Π°Ρ€Π°Π½Π΅Π΅ извСстно ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎΠ΅ количСство Π΄Π°Π½Π½Ρ‹Ρ…, хотя ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° сама эффСктивно управляСт Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ рСсурсов. ПослС создания массив состоит ΠΈΠ· элСмСнтов со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ НСопрСдСлСно, Ссли Π±Ρ‹Π»Π° Π·Π°Π΄Π°Π½Π° Π΅ΠΌΠΊΠΎΡΡ‚ΡŒ, ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ пуст, Ссли Π΅ΠΌΠΊΠΎΡΡ‚ΡŒ Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½Π°.

БущСствуСт Ρ‚Π°ΠΊΠΆΠ΅ способ быстрой ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ встроСнной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Новый Массив с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ ΠΈΠ»ΠΈ Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π² Ρ†ΠΈΠΊΠ»Π΅. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ β€” это ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ шаг, ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ зависит дальнСйшая структура Π²Π°ΡˆΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ…. Ошибки Π½Π° этом этапС Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ Ρ€Π΅Π΄ΠΊΠΎ, Π½ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ привСсти ΠΊ логичСским нСсоотвСтствиям Π² дальнСйшСм ΠΊΠΎΠ΄Π΅.

πŸ’‘

Если Π²Ρ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² массивС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π‘Ρ‚Ρ€ΠΎΠΊΠΈ), явно Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ это Π² коммСнтариях ΠΊ ΠΊΠΎΠ΄Ρƒ для упрощСния ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ.

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ вставка элСмСнтов

НаиболСС частой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с коллСкциями являСтся Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. ΠœΠ΅Ρ‚ΠΎΠ΄ Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ() ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ элСмСнт Π² ΠΊΠΎΠ½Π΅Ρ† массива, автоматичСски увСличивая Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ. Π­Ρ‚ΠΎ дСйствиС выполняСтся ΠΎΡ‡Π΅Π½ΡŒ быстро ΠΈ являСтся ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ способом наполнСния ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅.

  • πŸ“Œ ΠœΠ΅Ρ‚ΠΎΠ΄ Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅) Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ индСкс newly added элСмСнта, Ρ‡Ρ‚ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ссылок.
  • πŸ“Œ ΠœΠ΅Ρ‚ΠΎΠ΄ Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ(ИндСкс, Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅) позволяСт Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ элСмСнт Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΌ мСстС, сдвигая ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π²ΠΏΡ€Π°Π²ΠΎ.
  • πŸ“Œ ΠŸΡ€ΠΈ вставкС Π² сСрСдину массива происходит пСрСсчСт индСксов всСх ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… элСмСнтов, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°Ρ‚Ρ€Π°Ρ‚Π½ΠΎ.

ИспользованиС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ особой остороТности, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ мСняСт структуру индСксов. Если Π²Ρ‹ iterating ΠΏΠΎ массиву ΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ вставляСтС элСмСнты, ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΡΠ±ΠΈΡ‚ΡŒΡΡ со счСта ΠΈΠ»ΠΈ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² бСсконСчный Ρ†ΠΈΠΊΠ». Π‘Π΄Π²ΠΈΠ³ элСмСнтов β€” это опСрация Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ слоТности O(n), поэтому Π² Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ†ΠΈΠΊΠ»Π°Ρ… Π΅Π΅ Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ.

β˜‘οΈ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΠ΅Ρ€Π΅Π΄ вставкой элСмСнта

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ: 0 / 4

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π³Π΄Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ происходит динамичСски Π² зависимости ΠΎΡ‚ условия. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ списков ΠΎΡ‚Π±ΠΎΡ€Π° ΠΈΠ»ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ† Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Из БписокВоваров Π¦ΠΈΠΊΠ»

Если Π­Π»Π΅ΠΌΠ΅Π½Ρ‚.Π¦Π΅Π½Π° > 1000 Π’ΠΎΠ³Π΄Π°

ΠœΠ°ΡΡΠΈΠ²Π”ΠΎΡ€ΠΎΠ³ΠΈΡ…Π’ΠΎΠ²Π°Ρ€ΠΎΠ².Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚);

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ

ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° массива ΠΎΡ‚ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… β€” Π·Π°Π΄Π°Ρ‡Π°, которая часто Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ трудности Ρƒ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈΠ·-Π·Π° измСнСния индСксов. ΠœΠ΅Ρ‚ΠΎΠ΄ Π£Π΄Π°Π»ΠΈΡ‚ΡŒ(ИндСкс) ΡƒΠ±ΠΈΡ€Π°Π΅Ρ‚ элСмСнт ΠΏΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ Π½ΠΎΠΌΠ΅Ρ€Ρƒ, сдвигая всС ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ элСмСнты Π²Π»Π΅Π²ΠΎ. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ послС удалСния элСмСнта с индСксом i, элСмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» Π½Π° индСксС i+1, Π·Π°ΠΉΠΌΠ΅Ρ‚ мСсто i.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Никогда Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ†ΠΈΠΊΠ» Для i = 0 По Массив.Π’Π“Ρ€Π°Π½ΠΈΡ†Π°() с шагом 1, Ссли Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° Π²Ρ‹ удаляСтС элСмСнты. Π’Ρ‹ пропуститС ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π²Ρ‚ΠΎΡ€ΠΎΠΉ элСмСнт, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ индСксы сдвинутся, Π° счСтчик Ρ†ΠΈΠΊΠ»Π° увСличится.

Для бСзопасного удалСния элСмСнтов Π²ΠΎ врСмя ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ΄Ρ‚ΠΈ ΠΎΡ‚ ΠΊΠΎΠ½Ρ†Π° массива ΠΊ Π½Π°Ρ‡Π°Π»Ρƒ. Π’ этом случаС сдвиг индСксов Π½Π΅ влияСт Π½Π° Π΅Ρ‰Π΅ Π½Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ элСмСнты, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ находятся "Π»Π΅Π²Π΅Π΅" Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ индСкса. ΠžΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» β€” это Π·ΠΎΠ»ΠΎΡ‚ΠΎΠΉ стандарт бСзопасной ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ Π½Π° Π»Π΅Ρ‚Ρƒ.

Для i = Массив.Π’Π“Ρ€Π°Π½ΠΈΡ†Π°() По 0 Π¦ΠΈΠΊΠ» -1

Если Массив[i].ΠŸΠΎΠΌΠ΅Ρ‚ΠΊΠ°Π£Π΄Π°Π»Π΅Π½ΠΈΡ = Π˜ΡΡ‚ΠΈΠ½Π° Π’ΠΎΠ³Π΄Π°

Массив.Π£Π΄Π°Π»ΠΈΡ‚ΡŒ(i);

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

Π’Π°ΠΊΠΆΠ΅ сущСствуСт ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ(), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ удаляСт всС элСмСнты сразу, обнуляя Ρ€Π°Π·ΠΌΠ΅Ρ€ массива. Π­Ρ‚ΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ эффСктивный способ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ сброса ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, Ссли ΠΎΠ½Π° планируСтся ΠΊ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΌΡƒ использованию Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ контСкстС выполнСния. ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° памяти происходит ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ этот ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅Π΄ созданиСм Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² Π΄ΠΎΠ»Π³ΠΈΡ… Ρ†ΠΈΠΊΠ»Π°Ρ….

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π² прямом Ρ†ΠΈΠΊΠ»Π΅ опасно?

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ массив [A, B, C]. Π’Ρ‹ Π½Π° индСксС 0 (A), удаляСтС Π΅Π³ΠΎ. Массив становится [B, C]. Π¦ΠΈΠΊΠ» ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ индСксу 1. На индСксС 1 Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ стоит C. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ B Π±Ρ‹Π» ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ сдвинулся Π½Π° мСсто 0, Π° Ρ†ΠΈΠΊΠ» ΡƒΠΆΠ΅ ΡƒΡˆΠ΅Π» дальшС.

Поиск ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° наличия Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ

Часто Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π½Π°ΠΉΡ‚ΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ элСмСнт Π² массивС ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ дСйствий. ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 1Π‘ прСдоставляСт нСсколько инструмСнтов для этих Ρ†Π΅Π»Π΅ΠΉ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠΌΠ΅Π΅Ρ‚ свои особСнности ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ Ρ‡Π΅Ρ€Π΅Π· Ρ†ΠΈΠΊΠ» Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для ΠΌΠ°Π»Ρ‹Ρ… объСмов Π΄Π°Π½Π½Ρ‹Ρ…, Π½ΠΎ нСэффСктивСн для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… списков.

ΠœΠ΅Ρ‚ΠΎΠ΄ Найти(Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅) Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ индСкс ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ элСмСнта ΠΈΠ»ΠΈ -1, Ссли элСмСнт Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½. Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ происходит с использованиСм стандартного ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° сравнСния 1Π‘, Ρ‡Ρ‚ΠΎ позволяСт ΠΈΡΠΊΠ°Ρ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹, Π½ΠΎ ΠΈ слоТныС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Ссли ΠΎΠ½ΠΈ Ρ€Π°Π²Π½Ρ‹ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ. Однако, для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²-ссылок сравнСниС ΠΈΠ΄Π΅Ρ‚ ΠΏΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρƒ.

ΠœΠ΅Ρ‚ΠΎΠ΄ Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ
Найти() ИндСкс (Число) O(n) Π˜Ρ‰Π΅Ρ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅
ΠΠ°ΠΉΡ‚ΠΈΠ˜Π½Π΄Π΅ΠΊΡΡ‹() Массив индСксов O(n) Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ всС совпадСния
ΠΠ°ΠΉΡ‚ΠΈΠŸΠΎ(Бвойство, Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅) ИндСкс O(n) Поиск ΠΏΠΎ свойству ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°

Для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ частых ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ наличия элСмСнта рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ структуру БоотвСтствиС вмСсто массива, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ поиск Π² Π½Π΅ΠΉ выполняСтся Π·Π° врСмя O(1). Однако, Ссли порядок элСмСнтов Π²Π°ΠΆΠ΅Π½ ΠΈ Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚Ρ‹ допустимы, Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ поиск Π² массивС остаСтся Π±Π΅Π·Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ. ВсСгда ΠΎΡ†Π΅Π½ΠΈΠ²Π°ΠΉΡ‚Π΅ объСм Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° поиска.

πŸ’‘

Для частой ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ сущСствования элСмСнта Π² большом Π½Π°Π±ΠΎΡ€Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ‚ΠΈΠΏ "БоотвСтствиС" вмСсто массива, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ поиска Π² Π½Π΅ΠΌ Π½Π΅ зависит ΠΎΡ‚ количСства элСмСнтов.

ΠŸΠ΅Ρ€Π΅Π±ΠΎΡ€ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° элСмСнтов

Основная Ρ†Π΅Π½Π½ΠΎΡΡ‚ΡŒ массивов раскрываСтся ΠΏΡ€ΠΈ ΠΈΡ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π² Ρ†ΠΈΠΊΠ»Π°Ρ…. Π’ 1Π‘ сущСствуСт Π΄Π²Π° основных способа ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π°: ΠΏΠΎ индСксу ΠΈ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ. Π¦ΠΈΠΊΠ» Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ.. Из.. являСтся Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ ΠΈ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ индСкс элСмСнта ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ структуру самого массива.

ИспользованиС индСксного Ρ†ΠΈΠΊΠ»Π° Для i = 0 По Массив.Π’Π“Ρ€Π°Π½ΠΈΡ†Π°() Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, ΠΊΠΎΠ³Π΄Π° трСбуСтся доступ ΠΊ сосСдним элСмСнтам ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ элСмСнтов ΠΏΠΎ ссылкС (хотя для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² это Π½Π΅ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ ΠΏΠΎ ссылкС). Π’Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ свойство Π’Π“Ρ€Π°Π½ΠΈΡ†Π°() вычисляСтся динамичСски, ΠΈ Π² старых вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Π΅Π³ΠΎ частый Π²Ρ‹Π·ΠΎΠ² Π² условии Ρ†ΠΈΠΊΠ»Π° ΠΌΠΎΠ³ Π΄Π°Π²Π°Ρ‚ΡŒ нСбольшой ΠΎΠ²Π΅Ρ€Ρ…Π΅Π΄, хотя Π² соврСмСнных Ρ€Π΅Π»ΠΈΠ·Π°Ρ… это ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ.

  • πŸš€ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ для простого чтСния Π΄Π°Π½Π½Ρ‹Ρ… β€” ΠΊΠΎΠ΄ Ρ‡ΠΈΡ‰Π΅ ΠΈ мСньшС шансов Π½Π° ΠΎΡˆΠΈΠ±ΠΊΡƒ Π²Ρ‹Ρ…ΠΎΠ΄Π° Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹.
  • πŸš€ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ индСксный Ρ†ΠΈΠΊΠ», Ссли Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ элСмСнты (Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС) ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Массив[i] ΠΈ Массив[i+1].
  • πŸš€ Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΏΠΎ большим массивам β€” ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ возрастаСт ΡΠΊΡΠΏΠΎΠ½Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ.

ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ массива Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² 1Π‘ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ ΠΏΠΎ ссылкС. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π»ΡŽΠ±Ρ‹Π΅ измСнСния, внСсСнныС Π² массив Π²Π½ΡƒΡ‚Ρ€ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, отразятся Π½Π° ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π΅. Если трСбуСтся ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ копию ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с коллСкциями ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ Π² зависимости ΠΎΡ‚ вСрсии ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘ ΠΈ Ρ€Π΅ΠΆΠΈΠΌΠ° совмСстимости. ВсСгда свСряйтС синтаксис с Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ синтаксичСской справкой вашСй ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ.
πŸ“Š Какой способ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° массивов Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅ всСго?
Π¦ΠΈΠΊΠ» "Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ"
Π¦ΠΈΠΊΠ» ΠΏΠΎ индСксу "Для i = 0"
ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΠΎΡ‚ΠΎΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ…
Зависит ΠΎΡ‚ Π·Π°Π΄Π°Ρ‡ΠΈ

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΈ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки

Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с массивами Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ влияСт Π½Π° быстродСйствиС всСй систСмы. Одна ΠΈΠ· самых Π³Ρ€ΡƒΠ±Ρ‹Ρ… ошибок β€” конкатСнация строк ΠΈΠ»ΠΈ частоС созданиС Π½ΠΎΠ²Ρ‹Ρ… массивов Π²Π½ΡƒΡ‚Ρ€ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ². АлгоритмичСская ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π΄ΠΎΠ»ΠΆΠ½Π° всСгда ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, особСнно Π² рСгистровых вычислСниях.

Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ ситуации, ΠΊΠΎΠ³Π΄Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° ΠΏΠΎ массиву Π²Ρ‹ создаСтС Π½ΠΎΠ²Ρ‹ΠΉ массив ΠΈ ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚Π΅ Ρ‚ΡƒΠ΄Π° Π΄Π°Π½Π½Ρ‹Π΅ для Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ. Π›ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ массив ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ лишнСС, Π»ΠΈΠ±ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π€ΠΈΠ»ΡŒΡ‚Ρ€ (Ссли доступСн Π² вашСй вСрсии) ΠΈΠ»ΠΈ запрос. ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… объСмов Π΄Π°Π½Π½Ρ‹Ρ… β€” дорогая опСрация ΠΏΠΎ памяти ΠΈ процСссорному Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° распространСнная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° β€” Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ массив ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ всС Ρ‡Ρ‚ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ, Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ Ρ‚ΡƒΠ΄Π° число, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ строковый ΠΌΠ΅Ρ‚ΠΎΠ΄. ИспользованиС Π’ΠΈΠΏΠ—Π½Ρ‡() ΠΈΠ»ΠΈ явных ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ спасСт ΠΎΡ‚ критичСских ошибок выполнСния. Бтрогая типизация ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…-ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ достигаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ дисциплиной Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΈ коммСнтариями.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ "дырявый массив"?

Π­Ρ‚ΠΎ ситуация, ΠΊΠΎΠ³Π΄Π° Π² массивС ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ пустыС мСста (НСопрСдСлСно) послС удалСния элСмСнтов Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ошибкам ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ. ВсСгда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π£Π΄Π°Π»ΠΈΡ‚ΡŒ() для очистки ячССк.

Часто Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ вопросы (FAQ)

Как ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ послСдний элСмСнт массива Π±Π΅Π· знания Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°?

Для получСния послСднСго элСмСнта ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ свойство Π’Π“Ρ€Π°Π½ΠΈΡ†Π°(), ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ индСкс послСднСго элСмСнта. Бинтаксис Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ: Массив[Массив.Π’Π“Ρ€Π°Π½ΠΈΡ†Π°()]. Если массив пуст, этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²Π΅Ρ€Π½Π΅Ρ‚ -1, поэтому ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ΠΌ стоит ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ свойство ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ().

МоТно Π»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива послС Π΅Π³ΠΎ создания?

Π”Π°, Ρ€Π°Π·ΠΌΠ΅Ρ€ массива измСняСтся динамичСски. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΈ Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€, Π° Π£Π΄Π°Π»ΠΈΡ‚ΡŒ ΠΈ ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°ΡŽΡ‚. Π―Π²Π½ΠΎ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‡Π΅Ρ€Π΅Π· присваиваниС свойства Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ, ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° управляСт этим автоматичСски.

Π’ Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Массивом ΠΈ Π’Π°Π±Π»ΠΈΡ†Π΅ΠΉ Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ?

Массив β€” это простая коллСкция элСмСнтов, доступ ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ осущСствляСтся ΠΏΠΎ числовому индСксу. Π’Π°Π±Π»ΠΈΡ†Π° Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ β€” это структурированная коллСкция с ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌΠΈ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰Π°Ρ индСксы для быстрого поиска ΠΈ Π±ΠΎΠ»Π΅Π΅ Π±ΠΎΠ³Π°Ρ‚Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰Π°Ρ большС рСсурсов Π½Π° созданиС.

Как ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив, Ρ‡Ρ‚ΠΎΠ±Ρ‹ измСнСния Π² ΠΊΠΎΠΏΠΈΠΈ Π½Π΅ влияли Π½Π° ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»?

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ массив β€” это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, простоС присваиваниС ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ ссылку. Для создания нСзависимой ΠΊΠΎΠΏΠΈΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ массив ΠΈ Π² Ρ†ΠΈΠΊΠ»Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² Π½Π΅Π³ΠΎ всС элСмСнты ΠΈΠ· исходного. Для простых Ρ‚ΠΈΠΏΠΎΠ² это создаст ΠΏΠΎΠ»Π½ΡƒΡŽ копию, для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² β€” копию ссылки Π½Π° Ρ‚Π΅ ΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹.