== Π‘Π›ΠžΠš 2: Π’Π•Π›Πž БВАВЬИ ==

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

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

Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»Π° "Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ"

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

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

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

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Никогда Π½Π΅ ΠΏΡ‹Ρ‚Π°ΠΉΡ‚Π΅ΡΡŒ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива (Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ элСмСнты) Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡŽ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ Π½ΡƒΠΌΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ скрипта ΠΈΠ»ΠΈ пропуск элСмСнтов.

πŸ’‘

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ†ΠΈΠΊΠ» "Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ" для простых Π·Π°Π΄Π°Ρ‡ чтСния Π΄Π°Π½Π½Ρ‹Ρ…. Π­Ρ‚ΠΎ самый быстрый способ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°, хотя ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‡ΡƒΡ‚ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ индСксного доступа Π² спСцифичСских сцСнариях.

Π˜Π½Π΄Π΅ΠΊΡΠ½Ρ‹ΠΉ доступ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° с счСтчиками

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

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

Π’Π°ΠΆΠ½ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π²Π΅Ρ€Ρ…Π½ΡŽΡŽ Π³Ρ€Π°Π½ΠΈΡ†Ρƒ Ρ†ΠΈΠΊΠ»Π°. Π’ языкС 1Π‘ нумСрация массивов начинаСтся с нуля, поэтому послСдний элСмСнт всСгда ΠΈΠΌΠ΅Π΅Ρ‚ индСкс, Ρ€Π°Π²Π½Ρ‹ΠΉ Массив.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() - 1. Ошибка Π² этом расчСтС Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ пропуску послСднСй записи ΠΈΠ»ΠΈ ошибкС выполнСния.

Для ИндСкс = 0 По ΠœΠ°ΡΡΠΈΠ²Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() - 1 Π¦ΠΈΠΊΠ»

ВСкущаяБтруктура = ΠœΠ°ΡΡΠΈΠ²Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€[ИндСкс];

// ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ индСкса

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

πŸ“Š Какой Ρ†ΠΈΠΊΠ» Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅?
Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ
Для ... По
Пока
НС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ массивы

Поиск ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ Π΄Π°Π½Π½Ρ‹Ρ… Π² массивС

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

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

ΠŸΡ€ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… массивов Π²Π°ΠΆΠ½ΠΎ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ количСство ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π°. Вынос часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ констант Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ Ρ†ΠΈΠΊΠ»Π° ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€. Π’Π°ΠΊΠΆΠ΅ стоит ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ создания Π½ΠΎΠ²Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π°, Ссли это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.

  • πŸ” Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΠ°ΠΉΡ‚ΠΈΠŸΠΎΠ—Π½Π°Ρ‡Π΅Π½ΠΈΡŽ для быстрого поиска ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… записСй.
  • πŸ›‘οΈ ВсСгда провСряйтС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ поиска Π½Π° пустоту ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ΠΌ ΠΊ свойствам.
  • ⚑ ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠΉΡ‚Π΅ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»Π° ΠŸΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½ΡƒΠΆΠ½Ρ‹ΠΉ элСмСнт Π½Π°ΠΉΠ΄Π΅Π½.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠœΠ΅Ρ‚ΠΎΠ΄ поиска рСгистрозависим. Если ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ содСрТит строку "Π’ΠΎΠ²Π°Ρ€", поиск ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ "Ρ‚ΠΎΠ²Π°Ρ€" Π½Π΅ даст Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°. ΠŸΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚Π΅ строки ΠΊ Π΅Π΄ΠΈΠ½ΠΎΠΌΡƒ рСгистру ΠΏΠ΅Ρ€Π΅Π΄ сравнСниСм.

Как ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ поиск Π² большом массивС?

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

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΎΠ±Ρ…ΠΎΠ΄Π°

Вопрос эффСктивности ΠΊΠΎΠ΄Π° становится критичСским ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с дСсятками ΠΈ сотнями тысяч записСй. Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ сСкунды, Ρ‡Ρ‚ΠΎ Π² сСрвСрном исполнСнии Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ влияСт Π½Π° врСмя ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠ° систСмы для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. ПониманиС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΎΡ‚Π»ΠΈΡ‡Π°Π΅Ρ‚ junior-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΎΡ‚ профСссионала.

Π¦ΠΈΠΊΠ» Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ индСксного Ρ†ΠΈΠΊΠ»Π° ΠΈΠ·-Π·Π° Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Ρ… расходов Π½Π° созданиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°, Π½ΠΎ эта Ρ€Π°Π·Π½ΠΈΡ†Π° часто ΠΏΡ€Π΅Π½Π΅Π±Ρ€Π΅ΠΆΠΈΠΌΠΎ ΠΌΠ°Π»Π° Π½Π° Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΌΠ°Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. Однако ΠΏΡ€ΠΈ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌ коллСкциям ΠΈΠ»ΠΈ слоТным ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ Π½Π°ΠΊΠΎΠΏΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ эффСкт ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ Π·Π°ΠΌΠ΅Ρ‚Π½Ρ‹ΠΌ.

ΠŸΡ€ΡΠΌΠΎΠΉ доступ ΠΏΠΎ индСксу являСтся самым быстрым способом, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ создания Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Но Ссли Π²Ρ‹ ΠΎΡˆΠΈΠ±Π΅Ρ‚Π΅ΡΡŒ Π² условиях Ρ†ΠΈΠΊΠ»Π°, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ выполнСния. Баланс ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒΡŽ ΠΈ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ β€” ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² 1Π‘.

ΠœΠ΅Ρ‚ΠΎΠ΄ Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π§ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ Риск ошибок
Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ БрСдняя Высокая Низкий
Π˜Π½Π΄Π΅ΠΊΡΠ½Ρ‹ΠΉ (Для...По) Высокая БрСдняя Π‘Ρ€Π΅Π΄Π½ΠΈΠΉ
Поиск ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ ΠžΡ‡Π΅Π½ΡŒ высокая Высокая Низкий
Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ†ΠΈΠΊΠ»Ρ‹ Низкая Низкая Высокий
πŸ’‘

На ΠΌΠ°Π»Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΌΠ°Ρ… Π΄Π°Π½Π½Ρ‹Ρ… (Π΄ΠΎ 1000 строк) Π²Ρ‹Π±ΠΈΡ€Π°ΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΎΡ‰Π΅ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ. На Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΌΠ°Ρ… ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ отдаСтся индСксному доступу ΠΈ встроСнным ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ поиска.

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… структур ΠΈ рСкурсия

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ Π² 1Π‘ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ структуры ΠΈΠ»ΠΈ массивы Π² качСствС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ своих ΠΏΠΎΠ»Π΅ΠΉ. Π­Ρ‚ΠΎ позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ иСрархичСскиС Π΄Π°Π½Π½Ρ‹Π΅, ΠΏΠΎΡ…ΠΎΠΆΠΈΠ΅ Π½Π° JSON-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. ΠžΠ±Ρ…ΠΎΠ΄ Ρ‚Π°ΠΊΠΈΡ… ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Ρ… конструкций Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ примСнСния рСкурсивных Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² ΠΈΠ»ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ². Π—Π°Π΄Π°Ρ‡Π° услоТняСтся Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π³Π»ΡƒΠ±ΠΈΠ½Π° влоТСнности ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСизвСстна Π·Π°Ρ€Π°Π½Π΅Π΅.

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠ΅ΠΉ Π²Π°ΠΆΠ½ΠΎ Ρ‡Π΅Ρ‚ΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ условиС Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· рСкурсии. БСсконСчный Ρ†ΠΈΠΊΠ» ΠΏΡ€ΠΈ ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠ΅ ΠΎΠ±Ρ…ΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ стСка ΠΈ падСнию процСсса rphost. ВсСгда провСряйтС Ρ‚ΠΈΠΏ значСния ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΎΠΉ Π²Ρ…ΠΎΠ΄Π° Π²Π½ΡƒΡ‚Ρ€ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ элСмСнта.

РСкурсивный ΠΎΠ±Ρ…ΠΎΠ΄ ΡƒΠ΄ΠΎΠ±Π΅Π½ для Π·Π°Π΄Π°Ρ‡ Ρ‚ΠΈΠΏΠ° "Π΄Π΅Ρ€Π΅Π²ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ²" ΠΈΠ»ΠΈ "состав Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²". Π’Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ сама сСбя для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ элСмСнта. Π­Ρ‚ΠΎ элСгантно, Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ аккуратности с ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΎΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠžΠ±ΠΎΠΉΡ‚ΠΈΠ”Π΅Ρ€Π΅Π²ΠΎ(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚)

Если Π’ΠΈΠΏΠ—Π½Ρ‡(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚) = Π’ΠΈΠΏ("Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°") Π’ΠΎΠ³Π΄Π°

Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠšΠ»ΡŽΡ‡Π˜Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Из Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Π¦ΠΈΠΊΠ»

ΠžΠ±ΠΎΠΉΡ‚ΠΈΠ”Π΅Ρ€Π΅Π²ΠΎ(ΠšΠ»ΡŽΡ‡Π˜Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅);

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

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

ΠšΠΎΠ½Π΅Ρ†ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹;

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Глубокая рСкурсия (Π±ΠΎΠ»Π΅Π΅ 1000 ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ влоТСнности) ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ стСка Π²Ρ‹Π·ΠΎΠ²ΠΎΠ². Для ΠΎΡ‡Π΅Π½ΡŒ Π³Π»ΡƒΠ±ΠΎΠΊΠΈΡ… структур ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ со своим стСком (массивом).

β˜‘οΈ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° рСкурсивного Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°

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

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки ΠΈ способы ΠΈΡ… прСдотвращСния

Π”Π°ΠΆΠ΅ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ ошибки ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с коллСкциями. Π§Π°Ρ‰Π΅ всСго ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ связаны с Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ΠΌ области видимости ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° β€” это ссылочный Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚: копируя структуру Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, Π²Ρ‹ ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ссылку Π½Π° Π½Π΅Π΅, Π° Π½Π΅ сами Π΄Π°Π½Π½Ρ‹Π΅.

ИзмСнСниС свойств структуры Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° повлияСт Π½Π° исходный массив, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ Π² памяти. Если ваша Π·Π°Π΄Π°Ρ‡Π° ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ Π΄Π°Π½Π½Ρ‹Ρ… "Π½Π° Π»Π΅Ρ‚Ρƒ", это ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ. Но Ссли Π²Ρ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΊΠΎΠΏΠΈΠ΅ΠΉ, Π²Ρ‹ случайно испортитС исходныС Π΄Π°Π½Π½Ρ‹Π΅.

Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° частая ошибка β€” ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΊΠ»ΡŽΡ‡Ρƒ структуры. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄Ρ€ΡƒΠ³ΠΈΡ… языков, 1Π‘ выбросит ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠ»ΡŽΡ‡Π°, Ссли Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ бСзопасныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ доступа. ВсСгда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ Бвойство ΠΈΠ»ΠΈ провСряйтС Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π° ΠΏΠ΅Ρ€Π΅Π΄ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ΠΌ.

  • 🚫 НС измСняйтС ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ Π²ΠΎ врСмя Π΅Ρ‘ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π°.
  • πŸ” ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠΉΡ‚Π΅ сущСствованиС ΠΊΠ»ΡŽΡ‡Π° ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ΠΌ ΠΊ Π½Π΅ΠΌΡƒ.
  • πŸ“‹ ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ структура пСрСдаСтся ΠΏΠΎ ссылкС, Π° Π½Π΅ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ.
Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ "Бвойство" ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΎ Π½ΡƒΠΆΠ½ΠΎ?

ΠœΠ΅Ρ‚ΠΎΠ΄ Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°.Бвойство("Π˜ΠΌΡΠšΠ»ΡŽΡ‡Π°", Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅) Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π˜ΡΡ‚ΠΈΠ½Π°, Ссли ΠΊΠ»ΡŽΡ‡ сущСствуСт, ΠΈ записываСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ. Если ΠΊΠ»ΡŽΡ‡Π° Π½Π΅Ρ‚, ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²Π΅Ρ€Π½Π΅Ρ‚ Π›ΠΎΠΆΡŒ ΠΈ Π½Π΅ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ. Π­Ρ‚ΠΎ бСзопасный способ чтСния Π΄Π°Π½Π½Ρ‹Ρ….

МоТно Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ массив структур вмСсто рСгистров свСдСний?

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

Как ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ массив структур Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ?

Для этого создайтС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π’Π°Π±Π»ΠΈΡ†Π°Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΎΠΏΠΈΡˆΠΈΡ‚Π΅ Π΅Π³ΠΎ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ, Π° Π·Π°Ρ‚Π΅ΠΌ Π² Ρ†ΠΈΠΊΠ»Π΅ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ строки, копируя Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· структур. Π­Ρ‚ΠΎ часто трСбуСтся для Π²Ρ‹Π²ΠΎΠ΄Π° Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΎΡ‚Ρ‡Π΅Ρ‚Ρ‹ ΠΈΠ»ΠΈ Π‘ΠšΠ”.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Ρ†ΠΈΠΊΠ» "Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ" Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅?

Он создаСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚-ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ. Π’ соврСмСнных вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ эта Ρ€Π°Π·Π½ΠΈΡ†Π° минимальна, Π½ΠΎ Π½Π° ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹Ρ… массивах (ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Ρ‹ записСй) ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎΠΉ.

Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· массива ΠΏΡ€ΠΈ ΠΎΠ±Ρ…ΠΎΠ΄Π΅?

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ†ΠΈΠΊΠ» "Пока" с Ρ€ΡƒΡ‡Π½Ρ‹ΠΌ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ индСксом. Если элСмСнт удаляСтся, Π½Π΅ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΠΉΡ‚Π΅ индСкс, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ элСмСнт сдвинСтся Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ. Если Π½Π΅ удаляСтся β€” ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΠΉΡ‚Π΅ индСкс.

Π•ΡΡ‚ΡŒ Π»ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ массива структур Π² 1Π‘?

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅Ρ‚ доступный объСм ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти сСрвСра ΠΈΠ»ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°. ВСорСтичСского Π»ΠΈΠΌΠΈΡ‚Π° Π½Π° количСство элСмСнтов Π½Π΅Ρ‚, Π½ΠΎ практичСский ΠΏΡ€Π΅Π΄Π΅Π» опрСдСляСтся ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ систСмы.