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

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

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

Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ синтаксис ΠΈ конструктор ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²

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

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

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: НС ΠΏΡƒΡ‚Π°ΠΉΡ‚Π΅ объявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠ° Массив Ρ‡Π΅Ρ€Π΅Π· конструктор с присваиваниСм значСния НСопрСдСлСно. ΠŸΡƒΡΡ‚ΠΎΠΉ массив β€” это ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ с ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ, Π° НСопрСдСлСно β€” это отсутствиС значСния, ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ошибкС выполнСния.

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

// Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ пустого массива

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

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ, Π½ΠΎ ΠΌΠ΅Π½Π΅Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ способ β€” использованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΠΎΠ²Ρ‹ΠΉΠœΠ°ΡΡΠΈΠ²(). Π₯отя ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ конструктору, соврСмСнныС стандарты Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ 1Π‘ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ синтаксис Новый Π’ΠΈΠΏ для Сдинообразия ΠΊΠΎΠ΄Π°. Π­Ρ‚ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΈ поиск ΠΏΠΎ ΠΊΠΎΠ΄Ρƒ.

ℹ️ Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ Π² зависимости ΠΎΡ‚ вСрсии ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅. РСкомСндуСтся ΡΠ²Π΅Ρ€ΡΡ‚ΡŒ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ справку ΠΏΠΎ встроСнному языку для вашСй ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ вСрсии ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ.

β˜‘οΈ ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°Ρ инициализация

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

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ с ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ ΠΈ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ

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

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

// Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ массива Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 10 элСмСнтов

Π Π°Π·ΠΌΠ΅Ρ€ = 10;

ΠœΠ°ΡΡΠΈΠ²Π”Π°Π½Π½Ρ‹Ρ… = Новый Массив(Π Π°Π·ΠΌΠ΅Ρ€);

// Π—Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ нулями

Для Π‘Ρ‡Π΅Ρ‚Ρ‡ΠΈΠΊ = 0 По Π Π°Π·ΠΌΠ΅Ρ€ - 1 Π¦ΠΈΠΊΠ»

ΠœΠ°ΡΡΠΈΠ²Π”Π°Π½Π½Ρ‹Ρ…[Π‘Ρ‡Π΅Ρ‚Ρ‡ΠΈΠΊ] = 0;

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

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

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

ΠŸΠΎΡ‡Π΅ΠΌΡƒ индСксация с нуля?

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

Π Π°Π±ΠΎΡ‚Π° с Ѐиксированным массивом

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

Π“Π»Π°Π²Π½ΠΎΠ΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ послС создания фиксированного массива Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π² Π½Π΅Π³ΠΎ Π½ΠΎΠ²Ρ‹Π΅ элСмСнты, ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΎΡ‡ΠΈΡ‰Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ. ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ, Π£Π΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ошибкС выполнСния. Однако Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ элСмСнтов ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π²Π½ΡƒΡ‚Ρ€ΠΈ ячССк (Ссли сами ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ измСняСмы) Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ.

Π₯арактСристика ΠžΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ Массив Ѐиксированный Массив
Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ элСмСнтов Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ Π—Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ΠΎ
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнтов Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ Π—Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ΠΎ
ИзмСнСниС ΠΏΠΎ индСксу Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ
ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ Π—Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ΠΎ

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

// Π¨Π°Π³ 1: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ Π½Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ массива

Π’Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉΠœΠ°ΡΡΠΈΠ² = Новый Массив;

Π’Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉΠœΠ°ΡΡΠΈΠ².Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ 1");

Π’Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉΠœΠ°ΡΡΠΈΠ².Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ 2");

// Π¨Π°Π³ 2: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ фиксированной вСрсии

Π—Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹ΠΉΠœΠ°ΡΡΠΈΠ² = Новый Π€ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉΠœΠ°ΡΡΠΈΠ²(Π’Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉΠœΠ°ΡΡΠΈΠ²);

πŸ’‘

Ѐиксированный массив β€” это инструмСнт Π·Π°Ρ‰ΠΈΡ‚Ρ‹ структуры ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΎΡ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π° Π½Π΅ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ самих Π΄Π°Π½Π½Ρ‹Ρ… Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½Π΅Ρ‘ ΠΎΡ‚ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ.

ΠœΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ структуры ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡ‚ΡŒ

ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 1Π‘ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ понятиС "ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив" Π² явном Π²ΠΈΠ΄Π΅, ΠΊΠ°ΠΊ это Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Π² языках Ρ‚ΠΈΠΏΠ° C++ ΠΈΠ»ΠΈ Pascal с синтаксисом Array[5, 5]. ВмСсто этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ концСпция влоТСнности, ΠΊΠΎΠ³Π΄Π° элСмСнтом массива выступаСт Π΄Ρ€ΡƒΠ³ΠΎΠΉ массив. Π­Ρ‚ΠΎ позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ структуры любой слоТности ΠΈ размСрности.

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

  • πŸ“¦ Π’Π½Π΅ΡˆΠ½ΠΈΠΉ массив выступаСт Π² Ρ€ΠΎΠ»ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° для строк Π΄Π°Π½Π½Ρ‹Ρ….
  • πŸ“¦ Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ массивы ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ строки с ячСйками.
  • πŸ“¦ Доступ ΠΊ элСмСнту осущСствляСтся Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ индСксациСй: Массив[Π‘Ρ‚Ρ€ΠΎΠΊΠ°][Колонка].

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ создания ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ 3 Π½Π° 3. Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки. Π’Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ Π»Π΅Π³ΠΊΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ Π»ΡŽΠ±Ρ‹Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹, просто ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ†ΠΈΠΊΠ»ΠΎΠ².

ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π° = Новый Массив;

Для Π‘Ρ‡Π΅Ρ‚Ρ‡ΠΈΠΊΠ‘Ρ‚Ρ€ΠΎΠΊ = 0 По 2 Π¦ΠΈΠΊΠ»

НоваяБтрока = Новый Массив;

Для Π‘Ρ‡Π΅Ρ‚Ρ‡ΠΈΠΊΠšΠΎΠ»ΠΎΠ½ΠΎΠΊ = 0 По 2 Π¦ΠΈΠΊΠ»

НоваяБтрока.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π‘Ρ‡Π΅Ρ‚Ρ‡ΠΈΠΊΠ‘Ρ‚Ρ€ΠΎΠΊ * Π‘Ρ‡Π΅Ρ‚Ρ‡ΠΈΠΊΠšΠΎΠ»ΠΎΠ½ΠΎΠΊ);

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

ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π°.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(НоваяБтрока);

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

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

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ манипуляции Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² массивС

ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ массив создан, основная Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ Π΅Π³ΠΎ содСрТимым. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Массив прСдоставляСт Π±ΠΎΠ³Π°Ρ‚Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² для этих Ρ†Π΅Π»Π΅ΠΉ. НаиболСС часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌ являСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ элСмСнт Π² ΠΊΠΎΠ½Π΅Ρ† ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ индСкс Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ элСмСнта.

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

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠœΠ΅Ρ‚ΠΎΠ΄ Π£Π΄Π°Π»ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ индСкс удаляСмого элСмСнта. ПослС удалСния всС ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ элСмСнты ΡΠ΄Π²ΠΈΠ³Π°ΡŽΡ‚ΡΡ Π²Π»Π΅Π²ΠΎ, ΠΈ ΠΈΡ… индСксы ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°ΡŽΡ‚ΡΡ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ. Если Π²Ρ‹ удаляСтС элСмСнты Π² Ρ†ΠΈΠΊΠ»Π΅, идя с Π½Π°Ρ‡Π°Π»Π° массива, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ элСмСнты ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ Π²Ρ‹Ρ…ΠΎΠ΄Π° Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹.

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

πŸ“Š Какой ΠΌΠ΅Ρ‚ΠΎΠ΄ удалСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅?
Π£Π΄Π°Π»ΠΈΡ‚ΡŒ ΠΏΠΎ индСксу
ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ вСсь массив
Π€ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ Ρ‡Π΅Ρ€Π΅Π· Π½ΠΎΠ²Ρ‹ΠΉ массив
НС ΡƒΠ΄Π°Π»ΡΡŽ, ΠΏΠΎΠΌΠ΅Ρ‡Π°ΡŽ Ρ„Π»Π°Π³ΠΎΠΌ

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

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

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

ΠŸΡ€ΠΈ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠΈ элСмСнта ΠΈΠ· массива систСма Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ Ρ‚ΠΈΠΏ. Если Π»ΠΎΠ³ΠΈΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с числами, Π° Π² массивС окаТСтся строка, Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ ошибка прСобразования Ρ‚ΠΈΠΏΠ°. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠΉ считаСтся явная ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ‚ΠΈΠΏΠ° ΠΏΠ΅Ρ€Π΅Π΄ использованиСм ΠΈΠ»ΠΈ использованиС строгой Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ Π² описании ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π³Π΄Π΅ это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.

Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, массивы 1Π‘ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ достаточно эффСктивно. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ добавлСния Π² ΠΊΠΎΠ½Π΅Ρ† Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π·Π° константноС врСмя O(1). Однако вставка Π² сСрСдину ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ сдвига элСмСнтов, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ Π»ΠΈΠ½Π΅ΠΉΠ½ΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ O(N). Для частых вставок ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΉ Π² сСрСдинС ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π»ΡƒΡ‡ΡˆΠ΅ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ использованиС Ρ‚ΠΈΠΏΠ° БписокЗначСний ΠΈΠ»ΠΈ Π”Π΅Ρ€Π΅Π²ΠΎΠ—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, хотя ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ свои ограничСния.

πŸ’‘

ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… массивов ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°ΠΌΠΈ ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ массивы ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ ΠΏΠΎ ссылкС. ИзмСнСниС массива Π²Π½ΡƒΡ‚Ρ€ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ Π΅Π³ΠΎ ΠΈ Π² Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΌ ΠΊΠΎΠ΄Π΅. Для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΊΠΎΠΏΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ().

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

МоТно Π»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ фиксированного массива?

НСт, Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈ состав фиксированного массива ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ нСльзя послС Π΅Π³ΠΎ создания. Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ элСмСнт, придСтся ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ массив, ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΡƒΠ΄Π° Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· фиксированного, Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ элСмСнт ΠΈ снова ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ фиксированный массив.

Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚, Ссли ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ индСксу?

Если Π²Ρ‹ ΠΏΠΎΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ элСмСнт ΠΏΠΎ индСксу, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ большС ΠΈΠ»ΠΈ Ρ€Π°Π²Π΅Π½ свойству ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ, систСма выдаст ΠΎΡˆΠΈΠ±ΠΊΡƒ выполнСния "ИндСкс находится Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Π°ΠΌΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°". ΠŸΡ€ΠΈ записи Π² Ρ‚Π°ΠΊΠΎΠΉ индСкс массив автоматичСски Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡΡ.

Как ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ массив ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ?

Для ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ удалСния всСх элСмСнтов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ(). ПослС Π΅Π³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° свойство ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ станСт Ρ€Π°Π²Π½Ρ‹ΠΌ 0, Π½ΠΎ сама пСрСмСнная останСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ Ρ‚ΠΈΠΏΠ° Массив, Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΌ ΠΊ Π½ΠΎΠ²ΠΎΠΌΡƒ наполнСнию.

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

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

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π»ΠΈ 1Π‘ ассоциативныС массивы?

Π’ явном Π²ΠΈΠ΄Π΅ ассоциативных массивов (словарСй) Π² классичСском ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ Π½Π΅Ρ‚, Π½ΠΎ ΠΈΡ… Ρ€ΠΎΠ»ΡŒ выполняСт структура Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΈΠ»ΠΈ БоотвСтствиС, Π³Π΄Π΅ доступ ΠΊ элСмСнтам осущСствляСтся ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ-строкС, Π° Π½Π΅ ΠΏΠΎ числовому индСксу.