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

Π’ контСкстС Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ β€” это Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠ»ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ прСдоставляСт доступ ΠΊ элСмСнтам Π½Π°Π±ΠΎΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ…, сохраняя ΠΏΡ€ΠΈ этом состояниС Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ полоТСния. Π’Ρ‹, ΠΊΠ°ΠΊ программист, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ явного Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Next() ΠΈΠ»ΠΈ HasNext(), ΠΊΠ°ΠΊ Π² Java ΠΈΠ»ΠΈ C#, Π½ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ эти процСссы происходят "ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡ‚ΠΎΠΌ" ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ Ρ†ΠΈΠΊΠ» ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π°. Ошибки Π² ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ этого ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° часто приводят ΠΊ классичСским ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Ρ‚Π°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ квадратичная ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² ΠΏΡ€ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»Π°Ρ… ΠΈΠ»ΠΈ нСпрСдсказуСмоС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π²ΠΎ врСмя ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ.

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

ΠšΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π² Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ 1Π‘

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

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

πŸ’‘

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

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

БинтаксичСскиС конструкции для ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ…

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

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с массивом строк. Π’ этом ΠΊΠΎΠ΄Π΅ пСрСмСнная Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉΠ­Π»Π΅ΠΌΠ΅Π½Ρ‚ автоматичСски ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ‚ΠΈΠΏ ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠ³ΠΎ элСмСнта массива:

ΠœΠ°ΡΡΠΈΠ²Π”Π°Π½Π½Ρ‹Ρ… = Новый Массив;

ΠœΠ°ΡΡΠΈΠ²Π”Π°Π½Π½Ρ‹Ρ….Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ");

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

Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉΠ­Π»Π΅ΠΌΠ΅Π½Ρ‚ Из ΠœΠ°ΡΡΠΈΠ²Π”Π°Π½Π½Ρ‹Ρ… Π¦ΠΈΠΊΠ»

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉΠ­Π»Π΅ΠΌΠ΅Π½Ρ‚);

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

Однако, сущСствуСт нюанс, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ часто Π·Π°Π±Ρ‹Π²Π°ΡŽΡ‚ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΈ. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ Ρ†ΠΈΠΊΠ»Π° ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² Π΄Π²ΡƒΡ… Ρ€Π΅ΠΆΠΈΠΌΠ°Ρ…: ΠΊΠ°ΠΊ копия значСния ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ ссылка Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Если коллСкция содСрТит значСния простых Ρ‚ΠΈΠΏΠΎΠ² (числа, строки, Π΄Π°Ρ‚Ρ‹), Ρ‚ΠΎ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ†ΠΈΠΊΠ»Π° копируСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Если ΠΆΠ΅ коллСкция содСрТит ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ (справочники, Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹, структуры), Ρ‚ΠΎ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ ссылка Π½Π° этот ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ свойств ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° повлияСт Π½Π° исходныС Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ.

Π§Ρ‚ΠΎ происходит с Ρ‚ΠΈΠΏΠΎΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ†ΠΈΠΊΠ»Π°?

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

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

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

Вопрос ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈ использовании ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π² 1Π‘ стоит особСнно остро ΠΈΠ·-Π·Π° ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρ‹ языка ΠΈ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Ρ… расходов Π½Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ. Π₯отя конструкция Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡƒΠ΄ΠΎΠ±Π½Π°, ΠΎΠ½Π° Π½Π΅ всСгда являСтся самой быстрой. Π’ сцСнариях, Π³Π΄Π΅ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Π° каТдая миллисСкунда, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ дСсятков тысяч строк Π² Ρ†ΠΈΠΊΠ»Π΅, прямой доступ ΠΏΠΎ индСксу ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π½Π° 10-15% Π»ΡƒΡ‡ΡˆΠ΅, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ overhead, связанный с ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ элСмСнта ΠΎΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°-ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ.

ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠΉ ошибкой, Π²Π΅Π΄ΡƒΡ‰Π΅ΠΉ ΠΊ катастрофичСскому падСнию скорости, являСтся Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡ‚ΡŒ Ρ†ΠΈΠΊΠ»ΠΎΠ² с Π½Π΅ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ. Если Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅Ρ‚Π΅ ΠΎΠ΄Π½Ρƒ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° ΠΏΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ большой Ρ‚Π°Π±Π»ΠΈΡ†Π΅, ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° становится ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΈΡ‡Π½ΠΎΠΉ (O(n^2)). Π’ Ρ‚Π°ΠΊΠΈΡ… случаях использованиС ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π±Π΅Π· ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ индСксации Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ построСния Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… структур (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, БоотвСтствиС для быстрого поиска ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ) нСдопустимо.

πŸ“Š Какой способ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅?
Π¦ΠΈΠΊΠ» "Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ"
Π¦ΠΈΠΊΠ» ΠΏΠΎ индСксу "Для i = 0 ΠΏΠΎ ..."
ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π½Π°ΠΉΡ‚ΠΈ/ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ
Зависит ΠΎΡ‚ Π·Π°Π΄Π°Ρ‡ΠΈ

Π’Π°ΠΊΠΆΠ΅ стоит ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅ "Π»ΠΈΡˆΠ½ΠΈΡ…" ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ. Часто Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ ΠΏΠΎΠ»Π½ΡƒΡŽ Π²Ρ‹Π±ΠΎΡ€ΠΊΡƒ ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Π° Π·Π°Ρ‚Π΅ΠΌ Π² Ρ†ΠΈΠΊΠ»Π΅ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ ΠΈΠ»ΠΈ сСрвСрС ΠΎΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Ρ‹Π²Π°ΡŽΡ‚ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Π΅ записи. Π­Ρ‚ΠΎ Π³Ρ€ΡƒΠ±ΠΎΠ΅ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ. Π˜Ρ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΡƒΠΆΠ΅ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹ΠΌ, минимально Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌ Π½Π°Π±ΠΎΡ€ΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ…. Π€ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ запроса ΠΊ Π‘Π£Π‘Π”, Π° Π½Π΅ Π² ΠΊΠΎΠ΄Π΅ 1Π‘.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Никогда Π½Π΅ выполняйтС тяТСлыС вычислСния ΠΈΠ»ΠΈ обращСния ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π°, Ссли это ΠΌΠΎΠΆΠ½ΠΎ вынСсти Π·Π° Π΅Π³ΠΎ ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹. КаТдая итСрация β€” это ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ Ρ‚ΠΎΡ‡ΠΊΠ° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΈΠ»ΠΈ Π΄ΠΎΠ»Π³ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, которая суммируСтся Π½Π° всСм массивС Π΄Π°Π½Π½Ρ‹Ρ….

ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ Π²ΠΎ врСмя ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ

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

Рассмотрим классичСский ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ошибки ΠΏΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ ΠΈΠ· массива:

Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Из Массив Π¦ΠΈΠΊΠ»

Если Π­Π»Π΅ΠΌΠ΅Π½Ρ‚.ΠŸΠΎΠΌΠ΅Ρ‚ΠΊΠ°Π£Π΄Π°Π»Π΅Π½ΠΈΡ Π’ΠΎΠ³Π΄Π°

Массив.Π£Π΄Π°Π»ΠΈΡ‚ΡŒ(Массив.ИндСкс(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚)); // Опасно!

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

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

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

β˜‘οΈ БСзопасноС ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнтов

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

Для ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ Ρ‚ΠΈΠΏΠ° БписокЗначСний ΠΈΠ»ΠΈ Π’Π°Π±Π»ΠΈΡ†Π°Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ситуация Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Π°. ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 1Π‘ Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΏΡ€ΠΈ структурных измСнСниях ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ "Π½Π° Π»Π΅Ρ‚Ρƒ". Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ это ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π°ΠΆΠ΅ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ, ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°ΡŽΡ‰ΡƒΡŽ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π·ΠΎΠ»ΠΎΡ‚ΠΎΠ³ΠΎ сСчСния: итСрация Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния, модификация β€” Π΄ΠΎ ΠΈΠ»ΠΈ послС.

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π’Ρ‹Π±ΠΎΡ€ΠΊΠΎΠΉΠ˜Π·Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°Π—Π°ΠΏΡ€ΠΎΡΠ°

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Π’Ρ‹Π±ΠΎΡ€ΠΊΠ°Π˜Π·Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°Π—Π°ΠΏΡ€ΠΎΡΠ° являСтся спСцифичСским Π²ΠΈΠ΄ΠΎΠΌ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ нСпосрСдствСнно с ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΡ‚ Π‘Π£Π‘Π”. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ массива, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ загруТаСтся Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ, Π²Ρ‹Π±ΠΎΡ€ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΏΠΎΠ΄ΠΊΠ°Ρ‡ΠΊΠΈ (fetch), получая Π΄Π°Π½Π½Ρ‹Π΅ порциями. Π­Ρ‚ΠΎ позволяСт ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΌΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π΅ вызывая пСрСполнСния памяти сСрвСра 1Π‘.

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π²Ρ‹Π±ΠΎΡ€ΠΊΠΎΠΉ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ(). Π₯отя конструкция Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π΅Π³ΠΎ нСявно, ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ управлСния ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ. НапримСр, Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ количСство строк ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ() Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Π½ΡƒΠΆΠ½ΠΎΠ΅ число Ρ€Π°Π·.

Π₯арактСристика Массив / Бписок ВыборкаЗапроса
Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… Полная, сразу Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠŸΠΎΡ‚ΠΎΠΊΠΎΠ²Π°Ρ, ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ чтСния
Доступ ΠΊ элСмСнтам ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ (ΠΏΠΎ индСксу) Волько ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ
Π˜Π·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΡΡ‚ΡŒ МоТно ΠΌΠ΅Π½ΡΡ‚ΡŒ структуру Волько Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ (Read-only)
ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ Π’ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ бСсконСчно ВрСбуСтся сброс ΠΈΠ»ΠΈ Π½ΠΎΠ²Ρ‹ΠΉ запрос

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

πŸ’‘

Π’Ρ‹Π±ΠΎΡ€ΠΊΠ° запроса Π½Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ всС Π΄Π°Π½Π½Ρ‹Π΅ Π² памяти сразу, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Ρ‘ Π½Π΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌΠΎΠΉ для ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ² с ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π°ΠΌΠΈ строк, Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ остороТности с Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ.

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

ΠŸΡ€ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ ΠΊΠΎΠ΄Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, часто Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Π° с ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ видимости ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ Ρ†ΠΈΠΊΠ»Π° Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ сущСствуСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π°, Π½ΠΎ Ссли Π²Ρ‹ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ с Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π²Π½Π΅ Ρ†ΠΈΠΊΠ»Π°, это ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ логичСским ошибкам ΠΈ Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‚ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°. РСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π° для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π’Π΅ΠΊΠ‘Ρ‚Ρ€ΠΎΠΊΠ°Π’Π— ΠΈΠ»ΠΈ ЭлСмСнтБписка.

Частой ошибкой являСтся ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ‚Π°ΠΌ, Π³Π΄Π΅ Π½ΡƒΠΆΠ΅Π½ поиск. Если ваша Ρ†Π΅Π»ΡŒ β€” Π½Π°ΠΉΡ‚ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ элСмСнт ΠΏΠΎ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ, Π½Π΅Ρ‚ смысла ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒ всю ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ встроСнныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Найти(), ΠΠ°ΠΉΡ‚ΠΈΠŸΠΎΠ—Π½Π°Ρ‡Π΅Π½ΠΈΡŽ() ΠΈΠ»ΠΈ ИндСкс(). Они Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ C++ Π΄Π²ΠΈΠΆΠΊΠ° 1Π‘ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ быстрСС любого скриптового Ρ†ΠΈΠΊΠ»Π°.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Если Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с Π”Π΅Ρ€Π΅Π²ΠΎΠΌΠ—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ стандартный Ρ†ΠΈΠΊΠ» Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ ΡƒΠ·Π»Π°ΠΌ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ уровня. Для ΠΎΠ±Ρ…ΠΎΠ΄Π° всСго Π΄Π΅Ρ€Π΅Π²Π° (Π³Π»ΡƒΠ±ΠΈΠ½Π°) трСбуСтся рСкурсивная функция ΠΈΠ»ΠΈ использованиС ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΎΠ±Ρ…ΠΎΠ΄Π°, Ссли ΠΎΠ½ прСдусмотрСн вСрсиСй ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹.

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

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Ρ†ΠΈΠΊΠ» бСсконСчный?

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

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

МоТно Π»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ элСмСнт ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π² Ρ†ΠΈΠΊΠ»Π΅ "Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ"?

Π”Π°, Ссли элСмСнт являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ (ссылочным Ρ‚ΠΈΠΏΠΎΠΌ), Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΌΠ΅Π½ΡΡ‚ΡŒ Π΅Π³ΠΎ свойства (поля), ΠΈ измСнСния сохранятся Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ. Однако Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ сам элСмСнт Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, присвоив Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ†ΠΈΠΊΠ»Π° β€” это ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, Π½ΠΎ Π½Π΅ содСрТимоС массива ΠΈΠ»ΠΈ списка.

Π’ Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ†ΠΈΠΊΠ»ΠΎΠΌ "Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ" ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡ.ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΠ˜Ρ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€()?

Π’ языкС 1Π‘ Π½Π΅Ρ‚ явного ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΠ˜Ρ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€() для стандартных ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ, доступного Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ являСтся СдинствСнным стандартным способом использования ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°. Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ интСрфСйс IEnumerator, Π½ΠΎ ΠΎΠ½ скрыт ΠΎΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° для упрощСния синтаксиса.

Как ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ Π’Π°Π±Π»ΠΈΡ†Ρ‹ Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ?

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

Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚, Ссли коллСкция пуста?

Если коллСкция пуста, Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ... ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π° просто Π½Π΅ выполнится Π½ΠΈ Ρ€Π°Π·Ρƒ. Ошибки Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚, ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ со строки, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π·Π° ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°. Π­Ρ‚ΠΎ бСзопасная конструкция, Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰Π°Ρ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° пустоту (хотя ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ рСсурсы Π½Π° созданиС контСкста Ρ†ΠΈΠΊΠ»Π°).

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Π»ΠΈ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρƒ с COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ?

Π”Π°, Ссли COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ стандартныС интСрфСйсы пСрСчислСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, IEnumVARIANT), ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 1Π‘ смоТСт автоматичСски ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² Ρ†ΠΈΠΊΠ»Π΅ Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ. Π­Ρ‚ΠΎ позволяСт ΡƒΠ΄ΠΎΠ±Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с коллСкциями ΠΈΠ· Excel, Word ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π²Π½Π΅ΡˆΠ½ΠΈΡ… систСм Π±Π΅Π· написания слоТного ΠΊΠΎΠ΄Π° Π½Π° сторонС 1Π‘.