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

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

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

Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ синтаксис доступа ΠΈ присваивания

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

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

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

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

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

ИзмСнСниС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ простых ΠΈ составных Ρ‚ΠΈΠΏΠΎΠ²

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

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

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

МассивЧисСл = Новый Массив;

МассивЧисСл.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(10);

МассивЧисСл.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(20);

МассивЧисСл.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(30);

Для ИндСкс = 0 По МассивЧисСл.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ - 1 Π¦ΠΈΠΊΠ»

МассивЧисСл[ИндСкс] = МассивЧисСл[ИндСкс] * 1.5;

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

Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ позволяСтово ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π±Π΅Π· создания Π½ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ, Ρ‡Ρ‚ΠΎ экономит ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ. Однако стоит ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ модификация"Π½Π° Π»Π΅Ρ‚Ρƒ" Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° допустима Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли Π²Ρ‹ Π½Π΅ измСняСтС количСство элСмСнтов самого массива Π² Ρ‚Π΅Π»Π΅ Ρ†ΠΈΠΊΠ»Π°.

πŸ’‘

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с большими массивами чисСл ΡΡ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ созданиС Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π°, ΠΎΠ±Ρ€Π°Ρ‰Π°ΡΡΡŒ ΠΊ элСмСнту массива Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, Π³Π΄Π΅ это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.

Π Π°Π±ΠΎΡ‚Π° со ссылочными Ρ‚ΠΈΠΏΠ°ΠΌΠΈ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ

НаиболСС слоТным аспСктом для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ² становится ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ массив Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ БправочникБсылка, Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠžΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠ»ΠΈ БтрокаВабличнойЧасти. Π’ 1Π‘ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² хранят Π½Π΅ сами Π΄Π°Π½Π½Ρ‹Π΅, Π° ссылку Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² памяти ΠΈΠ»ΠΈ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Когда Π²Ρ‹ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² массив, Π²Ρ‹ ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚Π΅ эту ссылку.

Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π²Π°ΠΆΠ½ΠΎΠΌΡƒ ΠΏΠΎΡΠ»Π΅Π΄ΡΡ‚Π²ΠΈΡŽ: Ссли Π²Ρ‹ ΠΈΠ·Π²Π»Π΅ΠΊΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠ· массива, ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ Π΅Π³ΠΎ свойства ΠΈ записали ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ, ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π½Π΅ записывали, измСнСния примСнятся ΠΊ исходному ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ. Массив Π² Π΄Π°Π½Π½ΠΎΠΌ случаС выступаСт лишь ΠΊΠ°ΠΊ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ для ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ. Π­Ρ‚ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊΠ°Ρ€Π΄ΠΈΠ½Π°Π»ΡŒΠ½ΠΎ отличаСтся ΠΎΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Число ΠΈΠ»ΠΈ Π‘Ρ‚Ρ€ΠΎΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ.

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

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² массивС влияСт Π½Π° ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»?

ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π² ячСйкС массива хранится Π½Π΅ копия ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ (ссылка) Π½Π° ΠΎΠ±Π»Π°ΡΡ‚ΡŒ памяти, Π³Π΄Π΅ этот ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ resides. ИзмСняя ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΏΠΎ ссылкС, Π²Ρ‹ мСняСтС Π΅Π³ΠΎ состояниС глобально для всСх ссылок Π½Π° Π½Π΅Π³ΠΎ.

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

ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ массивов ΠΈ глубокая ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

Часто Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ массива, оставив исходный Π½Π΅Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚Ρ‹ΠΌ. ΠŸΡ€ΠΎΡΡ‚ΠΎΠ΅ присваиваниС ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ массива Π΄Ρ€ΡƒΠ³ΠΎΠΉ (Массив2 = Массив1) ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΎΠ±Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ Π² памяти. ИзмСнСниС элСмСнта Π² Массив2 ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ Π΅Π³ΠΎ ΠΈ Π² Массив1.

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

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

ΠœΠ΅Ρ‚ΠΎΠ΄ копирования Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° массива Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ
ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ (=) ΠžΠ±Ρ‰Π°Ρ (ссылка) ΠžΠ±Ρ‰ΠΈΠ΅ Максимальная
ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ Массив(Массив) НСзависимая ΠžΠ±Ρ‰ΠΈΠ΅ (ссылки) Высокая
Π ΡƒΡ‡Π½ΠΎΠ΅ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ΅ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ НСзависимая НСзависимыС (ΠΊΠΎΠΏΠΈΠΈ) Низкая

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

πŸ“Š Какой Ρ‚ΠΈΠΏ копирования Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅?
ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ ссылки
ΠŸΠΎΠ²Π΅Ρ€Ρ…Π½ΠΎΡΡ‚Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅
Π“Π»ΡƒΠ±ΠΎΠΊΠΎΠ΅ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅
НС Π·Π°Π΄ΡƒΠΌΡ‹Π²Π°ΡŽΡΡŒ ΠΎΠ± этом

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок ΠΈ валидация индСксов

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

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

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

ИндСкс = ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΠ˜Π½Π΄Π΅ΠΊΡΠ˜Π·Π’Π½Π΅ΡˆΠ½Π΅Π³ΠΎΠ˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊΠ°;

Если Π’ΠΈΠΏΠ—Π½Ρ‡(ИндСкс) = Π’ΠΈΠΏ("Число") И ИндСкс >= 0 И ИндСкс < Массив.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π’ΠΎΠ³Π΄Π°

Массив[ИндСкс] = НовоСЗначСниС;

Π˜Π½Π°Ρ‡Π΅

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("НСкоррСктный индСкс массива");

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

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

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ

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

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

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

β˜‘οΈ ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с массивом

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

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

πŸ’‘

Π“Π»Π°Π²Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ: ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ количСство ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΉ ΠΊ свойствам ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΈ ΠΈΠ·Π±Π΅Π³Π°ΠΉΡ‚Π΅ создания Π½ΠΎΠ²Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ρ‚Π°ΠΌ, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅.

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

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

НСт, опСрация присваивания значСния ΠΏΠΎ индСксу (Массив[i] = Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅) Π½Π΅ измСняСт Ρ€Π°Π·ΠΌΠ΅Ρ€ массива. Она Ρ‚ΠΎΠ»ΡŒΠΊΠΎ замСняСт содСрТимоС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ ячСйки. Для измСнСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ, Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ Π£Π΄Π°Π»ΠΈΡ‚ΡŒ.

Π§Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚, Ссли ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ элСмСнту массива Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ НСопрСдСлСно?

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ячСйки станСт Ρ€Π°Π²Π½Ρ‹ΠΌ Null (НСопрСдСлСно). Бсылка Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ (Ссли ΠΎΠ½ Π±Ρ‹Π») Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΡ‚Ρ€Π°Ρ‡Π΅Π½Π°, ΠΈ Ссли Π½Π° этот ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… ссылок, ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄Π°Π»Π΅Π½ сборщиком мусора. Π‘Π°ΠΌΠ° ячСйка массива ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ.

Как ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС элСмСнты ΠΎΠ΄Π½ΠΎΠ³ΠΎ массива Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ с ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ?

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

ВлияСт Π»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² массивС Π½Π° Π΄Π°Π½Π½Ρ‹Π΅ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…?

ИзмСнСниС свойств ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊΠžΠ±ΡŠΠ΅ΠΊΡ‚) Π² памяти Π½Π΅ сохраняСт измСнСния Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… автоматичСски. ПослС ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ явно Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρƒ этого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ измСнСния стали постоянными.