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

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

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

ΠŸΡ€ΡΠΌΠΎΠ΅ присваиваниС ΠΏΠΎ индСксу

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

Допустим, Ρƒ нас Π΅ΡΡ‚ΡŒ массив, содСрТащий список Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΉ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ². Если Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π²Ρ‚ΠΎΡ€ΠΎΠΉ элСмСнт (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ индСкс 1), ΠΌΡ‹ пишСм ΠΊΠΎΠ΄ Π² ΠΎΠ΄Π½Ρƒ строку. ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° автоматичСски ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ Ρ‚ΠΈΠΏ Π½ΠΎΠ²ΠΎΠ³ΠΎ значСния, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ массивы Π² 1Π‘ Π½Π΅ Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ строго ΠΏΠΎ содСрТимому. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ строку Π½Π° число, структуру ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠΉ массив Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ.

Однако стоит ΠΏΡ€ΠΎΡΠ²Π»ΡΡ‚ΡŒ ΠΎΡΡ‚ΠΎΡ€ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ вычислСнии индСкса динамичСски. Если пСрСмСнная, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ ΠΊΠ°ΠΊ индСкс, содСрТит ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ число ΠΈΠ»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°ΡŽΡ‰Π΅Π΅ Массив.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() - 1, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° прСрвСтся. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ записи часто ΠΈΠΌΠ΅Π΅Ρ‚ смысл Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π³Ρ€Π°Π½ΠΈΡ†, особСнно Ссли индСкс зависит ΠΎΡ‚ Π²Π½Π΅ΡˆΠ½ΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² вычислСний.

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

МойМассив.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("Π―Π±Π»ΠΎΠΊΠΎ");

МойМассив.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("Π“Ρ€ΡƒΡˆΠ°");

// ИзмСняСм Π²Ρ‚ΠΎΡ€ΠΎΠΉ элСмСнт

МойМассив[1] = "АпСльсин";

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

πŸ’‘

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с большими массивами Π² Ρ†ΠΈΠΊΠ»Π΅ ΡΡ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ количСство ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΉ ΠΊ свойствам ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π°, Ссли Π³Ρ€Π°Π½ΠΈΡ†Π° Π½Π΅ мСняСтся.

ИспользованиС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ присваивания Ρ‡Π΅Ρ€Π΅Π· ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки являСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ(). БинтаксичСски этот ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π±ΠΎΠ»Π΅Π΅ Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΠΈΠΌ, Π½ΠΎ ΠΎΠ½ прСдоставляСт Ρ‚Π΅ ΠΆΠ΅ возмоТности ΠΏΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. ΠœΠ΅Ρ‚ΠΎΠ΄ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π΄Π²Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°: индСкс элСмСнта ΠΈ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ ΠΎΠ½ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ Массив[ИндСкс] = Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

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

ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ индСксу Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ Ρ‚Ρƒ ΠΆΠ΅ ΡΠ°ΠΌΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ выполнСния. НСт Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Ρ€Π°Π·Π½ΠΈΡ†Ρ‹ Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ прямым доступом ΠΈ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ компилятор 1Π‘ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠ±Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° схоТим ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

  • πŸ“Œ ΠœΠ΅Ρ‚ΠΎΠ΄ Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ явно ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, Π° Π½Π΅ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈΡ….
  • πŸ“Œ Бинтаксис ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ индСкса Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ слоТного Ρ‚ΠΈΠΏΠ°.
  • πŸ“Œ ПовСдСниС ΠΏΡ€ΠΈ ошибкС индСкса ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΎ прямому ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡŽ.

Π’Ρ‹Π±ΠΎΡ€ ΠΌΠ΅ΠΆΠ΄Ρƒ синтаксичСским сахаром Π² Π²ΠΈΠ΄Π΅ скобок ΠΈ явным Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° остаСтся Π·Π° Π°Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΊΠΎΠ΄Π° ΠΈ рСгулируСтся Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌΠΈ стандартами Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ вашСй ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Π“Π»Π°Π²Π½ΠΎΠ΅ β€” ΡΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒ Π΅Π΄ΠΈΠ½ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠ΅ стиля Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ модуля ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

πŸ“Š Какой синтаксис Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅?
Массив[ИндСкс] = Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
Массив.Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ(ИндСкс, Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅)
Зависит ΠΎΡ‚ ситуации
Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ

Вставка ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнтов

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

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

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

// Вставка элСмСнта Π½Π° ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ 1

Массив.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ(1, "НовыйЭлСмСнт");

// Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнта с ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ 0

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

ПониманиС Ρ€Π°Π·Π½ΠΈΡ†Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ содСрТимого ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ структуры β€” ΠΊΠ»ΡŽΡ‡ ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌΡƒ Π²Ρ‹Π±ΠΎΡ€Ρƒ инструмСнта. Если ваша Ρ†Π΅Π»ΡŒ β€” ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ присваиваниС. Если Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ»ΠΈ количСство элСмСнтов β€” примСняйтС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ структуры.

Π§Ρ‚ΠΎ происходит Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΡ€ΠΈ вставкС?

ΠŸΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ систСма создаСт Π½ΠΎΠ²Ρ‹ΠΉ Π±Π»ΠΎΠΊ памяти достаточного Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ элСмСнты Π΄ΠΎ Ρ‚ΠΎΡ‡ΠΊΠΈ вставки, записываСт Π½ΠΎΠ²Ρ‹ΠΉ элСмСнт, ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ остаток массива ΠΈ освобоТдаСт ΡΡ‚Π°Ρ€ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ. Π­Ρ‚ΠΎ опСрация O(N).

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° массива Π² Ρ†ΠΈΠΊΠ»Π°Ρ…

НаиболСС частый сцСнарий измСнСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ β€” массовая ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ†ΠΈΠΊΠ»Π΅. Π—Π΄Π΅ΡΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ‡Π΅Ρ‚ΠΊΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» Для ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈ Ρ†ΠΈΠΊΠ» Для. Π’ Ρ†ΠΈΠΊΠ»Π΅ Для ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ пСрСмСнная ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° являСтся ΠΊΠΎΠΏΠΈΠ΅ΠΉ значСния элСмСнта (для ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ²) ΠΈΠ»ΠΈ ссылкой Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. ИзмСнСниС самой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π½Π΅ мСняСт содСрТимоС массива.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ элСмСнта Π² Ρ†ΠΈΠΊΠ»Π΅ Для ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ, Π²Π°ΠΌ потрСбуСтся доступ ΠΊ самому массиву ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ индСксу. Однако стандартный синтаксис Для ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Π½Π΅ прСдоставляСт индСкс автоматичСски. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях Π»ΠΈΠ±ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ†ΠΈΠΊΠ» Для ΠΎΡ‚ 0 Π΄ΠΎ ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ()-1, Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ хитрости с поиском индСкса, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Π½Π΅Π΅ эффСктивно.

Π¦ΠΈΠΊΠ» Для являСтся ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ для ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ массива, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π²Ρ‹ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ индСксами. Π­Ρ‚ΠΎ позволяСт бСзопасно ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ значСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ Массив[ИндСкс] = НовоСЗначСниС. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ измСнСния сохранятся Π² исходной ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ.

Π’ΠΈΠΏ Ρ†ΠΈΠΊΠ»Π° Доступ ΠΊ индСксу Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ измСнСния ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ
Для ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ НСт (автоматичСски) Волько Ρ‡Π΅Ρ€Π΅Π· поиск Высокая
Для.. По.. Π•ΡΡ‚ΡŒ ΠŸΡ€ΡΠΌΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Высокая
Пока Π ΡƒΡ‡Π½ΠΎΠ΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠŸΡ€ΡΠΌΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ БрСдняя

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

β˜‘οΈ ΠŸΡ€Π°Π²ΠΈΠ»Π° бСзопасного Ρ†ΠΈΠΊΠ»Π°

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

Π Π°Π±ΠΎΡ‚Π° с Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ структурами

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

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

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Если Π²Ρ‹ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, присвоитС элСмСнту массива Π½ΠΎΠ²ΡƒΡŽ Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρƒ), это Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ элСмСнта массива. Если ΠΆΠ΅ Π²Ρ‹ мСняСтС свойства ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, это ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ состояния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ссылаСтся массив.

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π³Π»ΡƒΠ±ΠΎΠΊΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ массивами (массив массивов) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ индСксации. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ элСмСнт сущСствуСт ΠΈ являСтся массивом, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΡƒΡ€ΠΎΠ²Π½ΡŽ влоТСнности. Π˜Π½Π°Ρ‡Π΅ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ привСдСния Ρ‚ΠΈΠΏΠ° ΠΈΠ»ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π° Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹.

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

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ°

Бамая распространСнная ошибка ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с массивами β€” ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° обращСния ΠΊ индСксу, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΅Ρ‰Π΅ Π½Π΅ сущСствуСт. Π­Ρ‚ΠΎ часто случаСтся ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² массив, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» создан, Π½ΠΎ Π½Π΅ Π½Π°ΠΏΠΎΠ»Π½Π΅Π½ элСмСнтами. ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅: ΠΌΠ΅Ρ‚ΠΎΠ΄ Новый Массив(10) создаСт массив ΠΈΠ· 10 элСмСнтов со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ НСопрСдСлСно, Π½ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ Новый Массив создаСт ΠΏΡƒΡΡ‚ΡƒΡŽ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ, Π³Π΄Π΅ индСкс 0 Π΅Ρ‰Π΅ нСдоступСн.

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

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

Π•Ρ‰Π΅ ΠΎΠ΄Π½ΠΎΠΉ частой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ являСтся ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Null (НСопрСдСлСно) ΠΈ пустой строкой ΠΈΠ»ΠΈ Π½ΡƒΠ»Π΅ΠΌ. ΠŸΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ сбрасываСтС Π΄Π°Π½Π½Ρ‹Π΅ Π² НСопрСдСлСно случайно, Ссли бизнСс-Π»ΠΎΠ³ΠΈΠΊΠ° этого Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚. Явная ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° НСопрСдСлСно ΠΏΠ΅Ρ€Π΅Π΄ записью ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΏΠΎΡ‚Π΅Ρ€ΡŽ Π²Π°ΠΆΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

πŸ’‘

ВсСгда ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ массив Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΎΠΉ записи ΠΏΠΎ индСксу, Ссли Π²Ρ‹ Π½Π΅ использовали конструктор с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°. ΠŸΡƒΡΡ‚ΠΎΠΉ массив Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ индСкса 0.

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

МоТно Π»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏ значСния Π² ячСйкС массива?

Π”Π°, массивы Π² 1Π‘ Π½Π΅ Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² ΠΎΠ΄Π½ΠΎΠΉ ячСйкС сначала строку, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΅Ρ‘ числом, Π΄Π°Ρ‚ΠΎΠΉ ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ. Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… провСряСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π°Π΄ самим Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ.

Π§Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚, Ссли Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ индСксу, Ρ€Π°Π²Π½ΠΎΠΌΡƒ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ массива?

ΠŸΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ ошибка выполнСния. Π˜Π½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡ начинаСтся с 0, поэтому ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ допустимый индСкс всСгда Ρ€Π°Π²Π΅Π½ ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ - 1. Для добавлСния Π½ΠΎΠ²ΠΎΠ³ΠΎ элСмСнта Π² ΠΊΠΎΠ½Π΅Ρ† ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ.

Как ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ всС значСния Π² массивС, Π½Π΅ удаляя элСмСнты?

Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΎΠΉΡ‚ΠΈΡΡŒ Ρ†ΠΈΠΊΠ»ΠΎΠΌ ΠΏΠΎ всСм индСксам массива ΠΈ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ элСмСнту Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ НСопрСдСлСно. ΠœΠ΅Ρ‚ΠΎΠ΄Π° "ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ значСния" Π±Π΅Π· измСнСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π² стандартном ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ Массив Π½Π΅ прСдусмотрСно.

ВлияСт Π»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ элСмСнта массива Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΡΡΡ‹Π»Π°ΡŽΡ‰ΠΈΠ΅ΡΡ Π½Π° Π½Π΅Π³ΠΎ?

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

МоТно Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ индСксы для доступа с ΠΊΠΎΠ½Ρ†Π° массива?

НСт, Π² языкС 1Π‘ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ индСксы Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ. Для доступа ΠΊ послСднСму элСмСнту Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ индСкс ΠΊΠ°ΠΊ Массив.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() - 1.