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

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° кроСтся Π² самой ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π΅ измСнСния структуры Π΄Π°Π½Π½Ρ‹Ρ… Β«Π½Π° Π»Π΅Ρ‚ΡƒΒ». Когда Π²Ρ‹ удаляСтС элСмСнт, всС ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ элСмСнты ΡΠ΄Π²ΠΈΠ³Π°ΡŽΡ‚ΡΡ Π½Π° ΠΎΠ΄Π½Ρƒ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Π²Π²Π΅Ρ€Ρ…, заполняя ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π²ΡˆΡƒΡŽΡΡ пустоту. Если счСтчик Ρ†ΠΈΠΊΠ»Π° ΠΏΡ€ΠΈ этом автоматичСски увСличиваСтся, ΠΎΠ½ пропускаСт элСмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ занял мСсто ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ. ПониманиС этого ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° критичСски Π²Π°ΠΆΠ½ΠΎ для написания стабного ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Β«ΠΏΠ°Π΄Π°Ρ‚ΡŒΒ» Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΌΠ°Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ спСцифичСских условиях Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ.

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

ΠŸΠΎΡ‡Π΅ΠΌΡƒ прямоС ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π² Ρ†ΠΈΠΊΠ»Π΅ «Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎΒ» Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ являСтся синтаксичСским сахаром, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ скрываСт ΠΎΡ‚ программиста Ρ€Π°Π±ΠΎΡ‚Ρƒ со счСтчиком. Π’Π½ΡƒΡ‚Ρ€ΠΈ этого Ρ†ΠΈΠΊΠ»Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° автоматичСски ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ индСкс послС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ. Если Π² Ρ‚Π΅Π»Π΅ Ρ†ΠΈΠΊΠ»Π° Π²Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π£Π΄Π°Π»ΠΈΡ‚ΡŒ(), физичСский Ρ€Π°Π·ΠΌΠ΅Ρ€ массива ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ΡΡ, Π° индСксы ΠΎΡΡ‚Π°Π²ΡˆΠΈΡ…ΡΡ элСмСнтов ΠΏΠ΅Ρ€Π΅ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ: Ρƒ вас Π΅ΡΡ‚ΡŒ массив ΠΈΠ· Ρ‚Ρ€Π΅Ρ… элСмСнтов с индСксами 0, 1 ΠΈ 2. Π¦ΠΈΠΊΠ» находится Π½Π° индСксС 0, Π²Ρ‹ удаляСтС этот элСмСнт. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» ΠΏΠΎΠ΄ индСксом 1, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ становится элСмСнтом с индСксом 0. Однако Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ счСтчик Ρ†ΠΈΠΊΠ»Π°, Π½Π΅ зная ΠΎΠ± этом, ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ своС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄ΠΎ 1. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ элСмСнт, ΡΠ΄Π²ΠΈΠ½ΡƒΠ²ΡˆΠΈΠΉΡΡ Π½Π° ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ 0, остаСтся Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΌ, Π° Ρ†ΠΈΠΊΠ» ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ. Если ΠΆΠ΅ Π²Ρ‹ удаляСтС послСдний элСмСнт, счСтчик ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΉΡ‚ΠΈ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° массива, Π²Ρ‹Π·Π²Π°Π² критичСскоС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Никогда Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ для удалСния элСмСнтов ΠΈΠ· массива, Ссли Π²Ρ‹ Π½Π΅ создаСтС ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ копию ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ. Π­Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ являСтся Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ для прСдотвращСния ошибок Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния Π² 1Π‘.

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

ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄: Ρ†ΠΈΠΊΠ» «Пока» с Ρ€ΡƒΡ‡Π½Ρ‹ΠΌ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ индСксом

Π‘Π°ΠΌΡ‹ΠΉ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΉ ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ способ удалСния элСмСнтов Π±Π΅Π· создания Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² β€” это использованиС Ρ†ΠΈΠΊΠ»Π° Пока. Π’ этом случаС Π²Ρ‹ сами ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счСтчика. Π›ΠΎΠ³ΠΈΠΊΠ° проста: Ссли элСмСнт ΡƒΠ΄Π°Π»Π΅Π½, индСкс Π½Π΅ увСличиваСтся, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ ΡƒΠΆΠ΅ сдвинулся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ элСмСнт. Если элСмСнт оставлСн, индСкс увСличиваСтся для ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ.

Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Ρ‡ΡƒΡ‚ΡŒ большС ΠΊΠΎΠ΄Π°, Ρ‡Π΅ΠΌ Ρ†ΠΈΠΊΠ» Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ, Π½ΠΎ ΠΎΠ½ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ элСмСнт Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½. Π’Ρ‹ явно провСряСтС условиС удалСния ΠΈ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π΅ счСтчика. Π­Ρ‚ΠΎ стандартная ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° Π² ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, которая ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² срСдС 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅.

ИндСкс = 0;

Пока ИндСкс < Массив.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() Π¦ΠΈΠΊΠ»

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

Массив.Π£Π΄Π°Π»ΠΈΡ‚ΡŒ(ИндСкс);

// ИндСкс Π½Π΅ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π° эту ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ сдвинулся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ элСмСнт

Π˜Π½Π°Ρ‡Π΅

ИндСкс = ИндСкс + 1;

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

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

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ Массив.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() Π² условии Ρ†ΠΈΠΊΠ»Π° Пока Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Ρ†ΠΈΠΊΠ»Π° Для, Π³Π΄Π΅ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Ρ„ΠΈΠΊΡΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² Π½Π°Ρ‡Π°Π»Π΅, Ρ†ΠΈΠΊΠ» Пока динамичСски Ρ€Π΅Π°Π³ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ.

πŸ’‘

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ этот ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΠ³Π΄Π° массив нСбольшой ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π΄Π° ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Π° экономия ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π΅ создаСтся копия ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ.

ΠœΠ΅Ρ‚ΠΎΠ΄ ΠΊΠΎΠΏΠΈΠΈ: бСзопасный ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π°

Если Π²Π°ΠΌ Π½Π΅ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ индСксами Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΈΠ»ΠΈ Π»ΠΎΠ³ΠΈΠΊΠ° условия удалСния слишком слоТна, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΉΡ‚ΠΈ ΠΏΡƒΡ‚Π΅ΠΌ создания ΠΊΠΎΠΏΠΈΠΈ массива. Π‘ΡƒΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ создаСтС Π½ΠΎΠ²Ρ‹ΠΉ массив, ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚Π΅ Π² Π½Π΅Π³ΠΎ всС элСмСнты исходного, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅Ρ‚Π΅ копию. Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΆΠ΅ производится ΠΈΠ· исходного массива ΠΏΠΎ ссылкам ΠΈΠ»ΠΈ значСниям, Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹ΠΌ Π² ΠΊΠΎΠΏΠΈΠΈ.

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

  • πŸ“‹ Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π½ΠΎΠ²Ρ‹ΠΉ пустой массив для хранСния ΠΎΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….
  • πŸ”„ Π‘Π΄Π΅Π»Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ»Π½ΡƒΡŽ копию исходного массива с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π‘ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ().
  • πŸ—‘οΈ ΠŸΡ€ΠΎΠΉΠ΄ΠΈΡ‚Π΅ΡΡŒ Ρ†ΠΈΠΊΠ»ΠΎΠΌ Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎ ΠΊΠΎΠΏΠΈΠΈ.
  • βœ… ДобавляйтС Π² Π½ΠΎΠ²Ρ‹ΠΉ массив Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ элСмСнты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ НЕ ΠΏΠΎΠ΄Π»Π΅ΠΆΠ°Ρ‚ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΡŽ.
  • πŸ”„ Π—Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ ссылку Π½Π° старый массив Π½ΠΎΠ²Ρ‹ΠΌ ΠΎΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ массивом.

Π­Ρ‚ΠΎΡ‚ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ сдвига индСксов, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ коллСкция, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΈΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€, остаСтся Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎΠΉ Π² процСссС ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ. ΠœΠΈΠ½ΡƒΡΠΎΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° являСтся Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ памяти, ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ массива. Для ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ Π² нСсколько тысяч элСмСнтов это Π½Π΅Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ, Π½ΠΎ для ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹Ρ… списков ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ ΡƒΠ·ΠΊΠΈΠΌ мСстом.

πŸ“Š Какой ΠΌΠ΅Ρ‚ΠΎΠ΄ удалСния Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅?
Цикл Пока с индСксом
БозданиС копии массива
Π€ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ Ρ‡Π΅Ρ€Π΅Π· Запрос
Π”Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄

ИспользованиС Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ† ΠΈ запросов для Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ

Когда Ρ€Π°Π±ΠΎΡ‚Π° вСдСтся с большими объСмами Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ элСмСнтами, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌΠΈ ΡΠ»ΠΎΠΆΠ½ΡƒΡŽ структуру (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, записи рСгистра ΠΈΠ»ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹), Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ эффСктивным способом «удалСния» являСтся Π½Π΅ модификация массива, Π° Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ запроса. ВмСсто Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ всС Π΄Π°Π½Π½Ρ‹Π΅ Π² массив ΠΈ Ρ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ, Π»ΡƒΡ‡ΡˆΠ΅ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½ΡƒΠΆΠ½ΠΎΠ΅.

Если массив ΡƒΠΆΠ΅ сформирован, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ запрос с условиСм ΠΎΡ‚Π±ΠΎΡ€Π° ΠΈ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² Π½ΠΎΠ²Ρ‹ΠΉ массив. Π­Ρ‚ΠΎ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ язык запросов 1Π‘ для Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎ часто быстрСС ΠΈ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠ΅Π΅, Ρ‡Π΅ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ Ρ†ΠΈΠΊΠ»Ρ‹ с мноТСством условий Если.

ΠœΠ΅Ρ‚ΠΎΠ΄ ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π§ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Расход памяти
Π¦ΠΈΠΊΠ» Пока Высокая БрСдняя ΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ
Копия массива БрСдняя Высокая Высокий (x2)
Запрос/Π’Π’ Зависит ΠΎΡ‚ объСма ΠžΡ‡Π΅Π½ΡŒ высокая Π‘Ρ€Π΅Π΄Π½ΠΈΠΉ

ΠŸΡ€ΠΈ использовании Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ† Π²Π°ΠΆΠ½ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ индСксы, Ссли объСм Π΄Π°Π½Π½Ρ‹Ρ… Π²Π΅Π»ΠΈΠΊ. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС опСрация Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΡΡ‚ΡŒ большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‡Π΅ΠΌ простая итСрация ΠΏΠΎ массиву. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ особСнно ΠΎΠΏΡ€Π°Π²Π΄Π°Π½, Ссли условия ΠΎΡ‚Π±ΠΎΡ€Π° зависят ΠΎΡ‚ связанных Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· JOIN Π² запросС.

Нюанс Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ

ΠŸΡ€ΠΈ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° запроса ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² массив Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ ΠΊ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌ. ВсСгда провСряйтС Ρ‚ΠΈΠΏΡ‹ ΠΏΠΎΠ»Π΅ΠΉ послС Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠΈ, Ссли Π΄Π°Π»Π΅Π΅ планируСтся строгая типизация.

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠ΅ΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ списком Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ

Помимо стандартного массива, Π² 1Π‘ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡΠ—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ БписокЗначСний. ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ удалСния элСмСнтов Π² Π½ΠΈΡ… Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ массивам, Π½ΠΎ Π΅ΡΡ‚ΡŒ свои Π½ΡŽΠ°Π½ΡΡ‹. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ БписокЗначСний часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ… для отобраТСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ, ΠΈ Π΅Π³ΠΎ модификация ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ обновлСния интСрфСйса.

Для ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈΠ—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π£Π΄Π°Π»ΠΈΡ‚ΡŒ() Ρ‚Π°ΠΊΠΆΠ΅ сдвигаСт индСксы. Однако, Ссли коллСкция ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ источник Π΄Π°Π½Π½Ρ‹Ρ… для поля Ρ„ΠΎΡ€ΠΌΡ‹ с Ρ‚ΠΈΠΏΠΎΠΌ «Бписок Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉΒ», ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнта Π²ΠΎ врСмя отобраТСния ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ошибки отрисовки. РСкомСндуСтся Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ очистку Ρ‚Π°ΠΊΠΈΡ… ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ Π΄ΠΎ назначСния ΠΈΡ… Π² качСствС источника Π΄Π°Π½Π½Ρ‹Ρ… элСмСнта Ρ„ΠΎΡ€ΠΌΡ‹.

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ массива, БписокЗначСний ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ свойством Π˜Π½Π΄Π΅ΠΊΡΠŸΠΎΠ—Π½Π°Ρ‡Π΅Π½ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π½Π°ΠΉΡ‚ΠΈ удаляСмый элСмСнт, Π½ΠΎ Π½Π΅ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ. ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с этими Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»Π΅Π½ Ρ†ΠΈΠΊΠ» Пока ΠΈΠ»ΠΈ созданиС Π½ΠΎΠ²ΠΎΠΉ ΠΎΡ‡ΠΈΡ‰Π΅Π½Π½ΠΎΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π·Π°ΠΌΠ΅Π½ΠΎΠΉ.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ элСмСнтов ΠΈΠ· БпискаЗначСний, связанного с элСмСнтом Ρ„ΠΎΡ€ΠΌΡ‹, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ элСмСнт Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄Π°Π»Π΅Π½ Π² процСссС ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΈΠ½Π°Ρ‡Π΅ фокус Π²Π²ΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒΡΡ ΠΈΠ»ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ошибка доступа.

Π‘Ρ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ Π²Ρ‹Π±ΠΎΡ€ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ

Π’Ρ‹Π±ΠΎΡ€ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° удалСния зависит ΠΎΡ‚ контСкста Π·Π°Π΄Π°Ρ‡ΠΈ. Если Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ Π² старом ΠΊΠΎΠ΄Π΅ ΠΈΠ»ΠΈ Π² условиях ТСстких ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ ΠΏΠΎ памяти (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚ΠΎΠ½ΠΊΠΈΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ с большим объСмом Π΄Π°Π½Π½Ρ‹Ρ…), Ρ†ΠΈΠΊΠ» Пока остаСтся Π±Π΅Π·Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ Π»ΠΈΠ΄Π΅Ρ€ΠΎΠΌ. Он Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ выдСлСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ памяти ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ максимально быстро.

Если ΠΆΠ΅ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠΌ являСтся ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°, Π° объСм Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… тысяч записСй, созданиС ΠΊΠΎΠΏΠΈΠΈ массива ΠΈΠ»ΠΈ использованиС Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ упростит ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΊΠΎΠ΄Π° Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ. МСньшС шансов Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ Π² Ρ€ΡƒΡ‡Π½ΠΎΠΌ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ индСксом, ΠΊΠΎΠ³Π΄Π° Π»ΠΎΠ³ΠΈΠΊΠ° Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ станСт слоТнСС.

β˜‘οΈ Π§Π΅ΠΊ-лист ΠΏΠ΅Ρ€Π΅Π΄ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ элСмСнтов

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

Π’ соврСмСнных вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘ (8.3.20 ΠΈ Π²Ρ‹ΡˆΠ΅) ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ ΠΊΠΎΠ΄Π° стал ΡƒΠΌΠ½Π΅Π΅, Π½ΠΎ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ΠΈ индСксами ΠΎΡΡ‚Π°Π»ΠΈΡΡŒ ΠΏΡ€Π΅ΠΆΠ½ΠΈΠΌΠΈ. НС стоит ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π½Π° Β«ΡƒΠ΄Π°Ρ‡ΡƒΒ» ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ с ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ. ВсСгда Π²Ρ‹Π±ΠΈΡ€Π°ΠΉΡ‚Π΅ явный ΠΈ прСдсказуСмый Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ.

πŸ’‘

Π—ΠΎΠ»ΠΎΡ‚ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ: Ссли Π²Ρ‹ удаляСтС элСмСнты Π² Ρ†ΠΈΠΊΠ»Π΅, Π²Ρ‹ обязаны Π»ΠΈΠ±ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ индСксом Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ (Ρ†ΠΈΠΊΠ» Пока), Π»ΠΈΠ±ΠΎ ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎ нСизмСняСмой ΠΊΠΎΠΏΠΈΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ.

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

МоТно Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» «Для» ΠΎΡ‚ (ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ-1) Π΄ΠΎ 0?

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

Π§Ρ‚ΠΎ быстрСС: Ρ†ΠΈΠΊΠ» Пока ΠΈΠ»ΠΈ созданиС ΠΊΠΎΠΏΠΈΠΈ массива?

Π¦ΠΈΠΊΠ» Пока всСгда быстрСС ΠΈ экономичнСС ΠΏΠΎ памяти, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ опСрация копирования массива Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ выдСлСния Π½ΠΎΠ²ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° памяти ΠΈ поэлСмСнтного пСрСноса Π΄Π°Π½Π½Ρ‹Ρ…. Π Π°Π·Π½ΠΈΡ†Π° становится Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎΠΉ Π½Π° массивах ΠΎΡ‚ 10 000 элСмСнтов ΠΈ Π±ΠΎΠ»Π΅Π΅.

Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· массива структур 1Π‘?

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Π° ΡƒΠ΄Π°Π»Π΅Π½ΠΈΡŽ ΠΈΠ· массива Π»ΡŽΠ±Ρ‹Ρ… Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ². Π’Ρ‹ ΠΎΠ±Ρ€Π°Ρ‰Π°Π΅Ρ‚Π΅ΡΡŒ ΠΊ элСмСнту массива (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΎΠΉ), провСряСтС свойство структуры ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ Массив.Π£Π΄Π°Π»ΠΈΡ‚ΡŒ(ИндСкс). Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Π²Π½ΡƒΡ‚Ρ€ΠΈ массива Π½Π΅ влияСт Π½Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠΊΡƒ удалСния.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ послС удалСния массив Β«ΠΌΠΈΠ³Π°Π΅Ρ‚Β» ΠΈΠ»ΠΈ Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚ Π² Ρ„ΠΎΡ€ΠΌΠ΅?

Если массив являСтся источником Π΄Π°Π½Π½Ρ‹Ρ… элСмСнта Ρ„ΠΎΡ€ΠΌΡ‹, ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ (ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅) ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ пСрСрисовку элСмСнта. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях Π»ΡƒΡ‡ΡˆΠ΅ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Ρ„ΠΎΡ€ΠΌΡ‹ Π½Π° врСмя ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ»ΠΈ ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ массив ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ источник Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ΄Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ.