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

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

Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ синтаксис доступа ΠΏΠΎ индСксу

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

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ коллСкция Π½Π΅ пуста. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ свойство ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ число элСмСнтов Π² массивС. Если это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π²Π½ΠΎ Π½ΡƒΠ»ΡŽ, ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° обращСния ΠΏΠΎ индСксу 0 Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ «ИндСкс находится Π²Π½Π΅ Π³Ρ€Π°Π½ΠΈΡ† массива». ВсСгда провСряйтС это условиС Π² Π½Π°Ρ‡Π°Π»Π΅ Π»ΠΎΠ³ΠΈΠΊΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠ΅ΠΉ.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ бСзопасного получСния значСния. ΠœΡ‹ создаСм массив, наполняСм Π΅Π³ΠΎ ΠΈ Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½ΠΎ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅ΠΌ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт, ΠΎΠ±Π΅Ρ€Π½ΡƒΠ² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ Π² ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ:

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

МойМассив.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("ΠŸΠ΅Ρ€Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅");

МойМассив.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("Π’Ρ‚ΠΎΡ€ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅");

Если МойМассив.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() > 0 Π’ΠΎΠ³Π΄Π°

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉΠ­Π»Π΅ΠΌΠ΅Π½Ρ‚ = МойМассив[0];

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅: " + ΠŸΠ΅Ρ€Π²Ρ‹ΠΉΠ­Π»Π΅ΠΌΠ΅Π½Ρ‚);

Π˜Π½Π°Ρ‡Π΅

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("Массив пуст");

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

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

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Никогда Π½Π΅ ΠΏΠΎΠ»Π°Π³Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ массив Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½. Π”Π°ΠΆΠ΅ Ссли Π»ΠΎΠ³ΠΈΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…, внСшниС Ρ„Π°ΠΊΡ‚ΠΎΡ€Ρ‹ (Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ ΠΎΡ‚Ρ‡Π΅Ρ‚Π°, ΠΏΡ€Π°Π²Π° доступа) ΠΌΠΎΠ³ΡƒΡ‚ привСсти ΠΊ созданию пустой ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ.

πŸ’‘

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

ИспользованиС встроСнных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ

Помимо прямого обращСния ΠΏΠΎ индСксу, класс Массив прСдоставляСт спСциализированныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для манипуляции Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Π₯отя ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΠŸΠ΅Ρ€Π²Ρ‹ΠΉ() Π² явном Π²ΠΈΠ΄Π΅ Π½Π΅ сущСствуСт, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ Π² спСцифичСских ситуациях, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ ΠΈΠ»ΠΈ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ. Однако для статичСского получСния элСмСнта прямой доступ остаСтся Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ.

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

Рассмотрим Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ основных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², Π²Π»ΠΈΡΡŽΡ‰ΠΈΡ… Π½Π° доступ ΠΊ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ элСмСнту:

ΠœΠ΅Ρ‚ΠΎΠ΄ ОписаниС дСйствия ВлияниС Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт
Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ() ДобавляСт элСмСнт Π² ΠΊΠΎΠ½Π΅Ρ† НС мСняСт индСкс 0, Ссли массив Π½Π΅ Π±Ρ‹Π» пуст
Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ() ВставляСт элСмСнт ΠΏΠΎ индСксу ΠœΠΎΠΆΠ΅Ρ‚ ΡΠ΄Π²ΠΈΠ½ΡƒΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт Π½Π° индСкс 1
Π£Π΄Π°Π»ΠΈΡ‚ΡŒ() УдаляСт элСмСнт ΠΏΠΎ индСксу Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнта 0 сдСлаСт Π²Ρ‚ΠΎΡ€ΠΎΠΉ элСмСнт ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ
Π‘Π΄Π²ΠΈΠ³() Π‘Π΄Π²ΠΈΠ³Π°Π΅Ρ‚ элСмСнты массива ΠšΠ°Ρ€Π΄ΠΈΠ½Π°Π»ΡŒΠ½ΠΎ мСняСт располоТСниС всСх Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ

ΠŸΡ€ΠΈ использовании ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ(0, Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅) Π²Ρ‹ фактичСски пСрСзаписываСтС ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт ΠΈΠ»ΠΈ сдвигаСтС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ. Π­Ρ‚ΠΎ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π°Ρ… проСктирования, Π³Π΄Π΅ Π½ΠΎΠ²Ρ‹ΠΉ элСмСнт Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½Ρ‹ΠΌ. Π‘ΡƒΠ΄ΡŒΡ‚Π΅ остороТны: такая опСрация ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΠΏΠΎΡ‚Π΅Ρ€Π΅ ссылки Π½Π° исходный ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт, Ссли ΠΎΠ½ Π½Π΅ Π±Ρ‹Π» сохранСн Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ.

πŸ“Š Какой способ доступа Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅?
ΠŸΡ€ΡΠΌΠΎΠΉ индСкс [0]
ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ‡Π΅Ρ€Π΅Π· ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ
Π¦ΠΈΠΊΠ» Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ
ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ сдвига

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ситуаций

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

Для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΊΠΎΠ΄Π° рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°...Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅. Π­Ρ‚ΠΎ позволяСт ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ выполнСния ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π΅Ρ‘ мягко, Π±Π΅Π· прСрывания Ρ€Π°Π±ΠΎΡ‚Ρ‹ всСго прилоТСния. ОсобСнно это Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ Π² Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ… ΠΈΠ»ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡΡ…, Π³Π΄Π΅ Π²Ρ‹ Π½Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ источник Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ.

ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = МойМассив[0];

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

// ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ситуации, ΠΊΠΎΠ³Π΄Π° массив пуст ΠΈΠ»ΠΈ Π½Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = НСопрСдСлСно;

Π—Π°ΠΏΠΈΡΡŒΠ–ΡƒΡ€Π½Π°Π»Π°Π Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ("Ошибка доступа ΠΊ массиву", Π£Ρ€ΠΎΠ²Π΅Π½ΡŒΠ–ΡƒΡ€Π½Π°Π»Π°Π Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ.Ошибка, , , ОписаниСОшибки());

ΠšΠΎΠ½Π΅Ρ†ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠΈ;

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

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: НС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π±Π»ΠΎΠΊ Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ для скрытия логичСских ошибок Π² ΠΊΠΎΠ΄Π΅. Если массив оказываСтся пустым Ρ‚Π°ΠΌ, Π³Π΄Π΅ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½, Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρƒ Π² Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅ формирования Π΄Π°Π½Π½Ρ‹Ρ…, Π° Π½Π΅ просто ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ?

ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ формирования ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² 1Π‘ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… рСсурсов ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° сборку стСка Π²Ρ‹Π·ΠΎΠ²ΠΎΠ², Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π³ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ тяТСлСС простого условного ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π°.

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ массивами

Π’ послСдних вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ появилась Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ массивы. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ТСстко Π·Π°Π΄Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Число ΠΈΠ»ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π‘Ρ‚Ρ€ΠΎΠΊΠ°. ΠŸΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта ΠΈΠ· Ρ‚Π°ΠΊΠΎΠ³ΠΎ массива Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹ Π² Π΅Π³ΠΎ Ρ‚ΠΈΠΏΠ΅, Ρ‡Ρ‚ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈ позволяСт ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π»ΠΈΡˆΠ½ΠΈΡ… ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ Ρ‚ΠΈΠΏΠ°.

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ объявлСния ΠΈ использования Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ массива:

Π’ΠΈΠΏΠ­Π»Π΅ΠΌΠ΅Π½Ρ‚Π° = Новый ОписаниСВипов("Число");

Π’ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉΠœΠ°ΡΡΠΈΠ² = Новый Массив(Π’ΠΈΠΏΠ­Π»Π΅ΠΌΠ΅Π½Ρ‚Π°);

Π’ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉΠœΠ°ΡΡΠΈΠ².Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(100);

// БистСма Π·Π½Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠŸΠ΅Ρ€Π²Ρ‹ΠΉΠ­Π»Π΅ΠΌΠ΅Π½Ρ‚ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ Число

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉΠ­Π»Π΅ΠΌΠ΅Π½Ρ‚ = Π’ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉΠœΠ°ΡΡΠΈΠ²[0];

Π‘ΡƒΠΌΠΌΠ° = ΠŸΠ΅Ρ€Π²Ρ‹ΠΉΠ­Π»Π΅ΠΌΠ΅Π½Ρ‚ + 50;

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

πŸ’‘

Π’ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ массивы ΠΏΠΎΠ²Ρ‹ΡˆΠ°ΡŽΡ‚ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°, прСдотвращая ΠΏΠΎΠΏΠ°Π΄Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅Π²Π΅Ρ€Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π² Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ.

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

Π’ высоконагруТСнных систСмах, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… объСмов Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ Ρ€Π΅Π³Π»Π°ΠΌΠ΅Π½Ρ‚Π½Ρ‹Π΅ задания, каТдая миллисСкунда ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π’ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ вопрос: ΠΊΠ°ΠΊΠΎΠΉ способ получСния ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта быстрСС? ΠŸΡ€ΡΠΌΠΎΠ΅ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΏΠΎ индСксу, использованиС ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ‡Π΅Ρ€Π΅Π· свойства?

ΠŸΡ€ΡΠΌΠΎΠΉ доступ ΠΏΠΎ индСксу Массив[0] являСтся Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ быстрым способом, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ минимального количСства инструкций процСссора. Π›ΡŽΠ±Ρ‹Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, Π²Ρ‹Π·ΠΎΠ²Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈΠ»ΠΈ созданиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²-ΠΎΠ±Π΅Ρ€Ρ‚ΠΎΠΊ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы. Π’ Ρ†ΠΈΠΊΠ»Π°Ρ…, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΡ…ΡΡ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Ρ‹ Ρ€Π°Π·, Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ сСкунды ΠΈ Π΄Π°ΠΆΠ΅ ΠΌΠΈΠ½ΡƒΡ‚Ρ‹ ΠΎΠ±Ρ‰Π΅Π³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния.

  • πŸš€ ΠŸΡ€ΡΠΌΠΎΠΉ индСкс: Максимальная ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ, ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы.
  • 🐒 Π˜Ρ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ (Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ): МСдлСннСС ΠΈΠ·-Π·Π° создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ, нСцСлСсообразно для получСния ΠΎΠ΄Π½ΠΎΠ³ΠΎ элСмСнта.
  • βš–οΈ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ: ΠΠ΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π°ΠΌΠ΅Π΄Π»Π΅Π½ΠΈΠ΅, Π½ΠΎ критичСски Π²Π°ΠΆΠ½ΠΎ для ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

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

β˜‘οΈ ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ

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

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΈΠ· Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡

Рассмотрим Ρ€Π΅Π°Π»ΡŒΠ½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ: ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈΠ· Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ для провСдСния ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°. Часто программисты ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ массив ссылок Π½Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ… ΠΈΠ»ΠΈ провСсти Π΅Π³ΠΎ. Π—Π΄Π΅ΡΡŒ Π²Π°ΠΆΠ½ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ссылку, Π½ΠΎ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ….

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° для открытия Ρ„ΠΎΡ€ΠΌΡ‹ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°:

ΠœΠ°ΡΡΠΈΠ²Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² = ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΠœΠ°ΡΡΠΈΠ²Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²();

Если ΠœΠ°ΡΡΠΈΠ²Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() > 0 Π’ΠΎΠ³Π΄Π°

БсылкаНаДок = ΠœΠ°ΡΡΠΈΠ²Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²[0];

// ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

Если НС БсылкаНаДок.ΠŸΠΎΠΌΠ΅Ρ‚ΠΊΠ°Π£Π΄Π°Π»Π΅Π½ΠΈΡ() Π’ΠΎΠ³Π΄Π°

Π€ΠΎΡ€ΠΌΠ°Π”ΠΎΠΊ = БсылкаНаДок.ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΠ€ΠΎΡ€ΠΌΡƒ();

Π€ΠΎΡ€ΠΌΠ°Π”ΠΎΠΊ.ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ();

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

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

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

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π² Π½ΠΎΠ²Ρ‹Ρ… Ρ€Π΅Π»ΠΈΠ·Π°Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘. ВсСгда ΡΠ²Π΅Ρ€ΡΠΉΡ‚Π΅ΡΡŒ с синтаксис-ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΠΊΠΎΠΌ вашСй ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ вСрсии ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ Π² Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ².

Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли Π½ΡƒΠΆΠ΅Π½ Π½Π΅ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ, Π° послСдний элСмСнт?

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρƒ ИндСкс = Массив.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() - 1. Π­Ρ‚ΠΎ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ способ доступа ΠΊ послСднСму элСмСнту нСзависимо ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° массива.

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

Π§Ρ‚ΠΎ Π²Π΅Ρ€Π½Π΅Ρ‚ массив[0], Ссли массив пуст?

ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ элСмСнту пустого массива ΠΏΠΎ индСксу 0 Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ выполнСния «ИндСкс находится Π²Π½Π΅ Π³Ρ€Π°Π½ΠΈΡ† массива». ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΡ€Π΅Ρ€Π²Π΅Ρ‚ свою Ρ€Π°Π±ΠΎΡ‚Ρƒ, Ссли это ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½ΠΎ конструкциСй ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°...Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅. ВсСгда провСряйтС свойство ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ΠΌ.

МоТно Π»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт массива?

Π”Π°, массивы Π² 1Π‘ ΡΠ²Π»ΡΡŽΡ‚ΡΡ измСняСмыми коллСкциями. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ индСксу: Массив[0] = НовоСЗначСниС. Π­Ρ‚ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ староС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π±Π΅Π· измСнСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° массива. Если ΠΆΠ΅ Π½ΡƒΠΆΠ½ΠΎ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ элСмСнт, сдвинув ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ.

Π’ Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Массив ΠΈ БписокЗначСний?

Массив β€” это базовая коллСкция для хранСния Π»ΡŽΠ±Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, оптимизированная для скорости. БписокЗначСний β€” это Π±ΠΎΠ»Π΅Π΅ слоТная структура, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰Π°Ρ сортировку, поиск ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свойства Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта (ΠΏΠΎΠΌΠ΅Ρ‚ΠΊΠ°, ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Π°). Для простого хранСния ΠΈ доступа ΠΏΠΎ индСксу Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Массив.

Как ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт, Ссли Π΄Π°Π½Π½Ρ‹Π΅ приходят ΠΈΠ· запроса?

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ запроса ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ возвращаСтся Π² Π²ΠΈΠ΄Π΅ Π’Ρ‹Π±ΠΎΡ€ΠΊΠ°Π˜Π·Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°Π—Π°ΠΏΡ€ΠΎΡΠ°. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π²ΡƒΡŽ строку, Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ(). Если ΠΆΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ ΡƒΠΆΠ΅ Π²Ρ‹Π³Ρ€ΡƒΠΆΠ΅Π½Ρ‹ Π² массив Ρ‡Π΅Ρ€Π΅Π· Π’Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ(), Ρ‚ΠΎ примСняСтся стандартная схСма с индСксом 0.