Π Π°Π±ΠΎΡ‚Π° с массивами Π² 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ 8.3 β€” ΠΎΠ΄Π½Π° ΠΈΠ· самых вострСбованных Π·Π°Π΄Π°Ρ‡ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΈ. ОбъСдинСниС элСмСнтов массивов трСбуСтся ΠΏΡ€ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ², ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Ρ€Π°Π·Π½Ρ‹Ρ… источников, ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² для ΠΎΠ±ΠΌΠ΅Π½Π° ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… сцСнариях. Однако стандартныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ часто Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ вопросы: ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ БоСдинСниСМассивов(), Π° ΠΊΠΎΠ³Π΄Π° Π»ΡƒΡ‡ΡˆΠ΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ? Как ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ дублирования Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΈΠ½ΠΎΠ³Π΄Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ получаСтся Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹ΠΌ?

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

1. Бтандартная функция БоСдинСниСМассивов() β€” простой, Π½ΠΎ Π½Π΅ всСгда ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ способ

Π‘Π°ΠΌΡ‹ΠΉ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ объСдинСния β€” встроСнная функция БоСдинСниСМассивов(). Она ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ΅ количСство массивов ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ массив, содСрТащий всС элСмСнты исходных. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ использования:

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

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

Массив1.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("Π‘Π°Π½Π°Π½");

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

Массив2.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("АпСльсин");

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

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = БоСдинСниСМассивов(Массив1, Массив2);

// Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: ["Π―Π±Π»ΠΎΠΊΠΎ", "Π‘Π°Π½Π°Π½", "АпСльсин", "Π“Ρ€ΡƒΡˆΠ°"]

На ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд, функция идСальна для простых Π·Π°Π΄Π°Ρ‡, Π½ΠΎ Ρƒ Π½Π΅Ρ‘ Π΅ΡΡ‚ΡŒ критичСскиС ограничСния:

  • πŸ”„ Π”ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ элСмСнтов: Ссли Π² ΠΎΠ±ΠΎΠΈΡ… массивах Π΅ΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ значСния, ΠΎΠ½ΠΈ ΠΏΠΎΠΏΠ°Π΄ΡƒΡ‚ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π΄Π²Π°ΠΆΠ΄Ρ‹. НапримСр, БоСдинСниСМассивов([1,2], [2,3]) Π²Π΅Ρ€Π½Ρ‘Ρ‚ [1,2,2,3].
  • 🐒 ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ: ΠΏΡ€ΠΈ объСдинСнии Π±ΠΎΠ»ΡŒΡˆΠΈΡ… массивов (10 000+ элСмСнтов) функция Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ Ρ€ΡƒΡ‡Π½Ρ‹Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ².
  • πŸ“¦ Випизация: Ссли массивы содСрТат Ρ€Π°Π·Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, числа ΠΈ строки), Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ вСсти сСбя Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎ ΠΏΡ€ΠΈ сортировкС.
⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Ѐункция БоСдинСниСМассивов() создаёт Π½ΠΎΠ²Ρ‹ΠΉ массив Π² памяти. ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΎΠ±ΡŠΡ‘ΠΌΠΎΠΌ Π±ΠΎΠ»Π΅Π΅ 100 000 элСмСнтов это ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ стСка, особСнно Π² Ρ‚ΠΎΠ½ΠΊΠΎΠΌ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅.
πŸ“Š Какой ΠΌΠ΅Ρ‚ΠΎΠ΄ объСдинСния массивов Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅?
БоСдинСниСМассивов()
Π ΡƒΡ‡Π½ΠΎΠΉ Ρ†ΠΈΠΊΠ»
Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ‡Π΅Ρ€Π΅Π· ΠŸΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ()
Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅Π—Π½Π°Ρ‡Π΅Π½ΠΈΡ ΠΈ Π΄Ρ€.)

2. Π ΡƒΡ‡Π½ΠΎΠ΅ объСдинСниС Ρ‡Π΅Ρ€Π΅Π· Ρ†ΠΈΠΊΠ» β€” ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ ΠΈ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ

Когда Π½ΡƒΠΆΠ½ΠΎ Ρ‚ΠΎΡ‡Π½ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ процСсс объСдинСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π΄ΡƒΠ±Π»ΠΈ ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ элСмСнты ΠΏΠ΅Ρ€Π΅Π΄ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ), Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ явный Ρ†ΠΈΠΊΠ». Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ унивСрсалСн ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Π»ΡŽΠ±Ρ‹Ρ… вСрсиях 1Π‘, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹.

Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

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

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

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

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

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

Массив2.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(40);

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Новый Массив;

// ДобавляСм элСмСнты ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ массива

Для КаТдого Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Из Массив1 Π¦ΠΈΠΊΠ»

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚);

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

// ДобавляСм элСмСнты Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ массива

Для КаТдого Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Из Массив2 Π¦ΠΈΠΊΠ»

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚);

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

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°:

  • ⚑ ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ: ΠΏΡ€ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ» Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ быстрСС БоСдинСниСМассивов() Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ….
  • πŸ”§ Π“ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ: ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ условия (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ пустыС значСния ΠΈΠ»ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ элСмСнты).
  • πŸ›‘οΈ Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ: Π½Π΅Ρ‚ риска пСрСполнСния памяти, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ элСмСнты Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ.

Для ускорСния ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… массивов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΠ Π°Π·ΠΌΠ΅Ρ€(Массив1.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() + Массив2.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ()) ΠΏΠ΅Ρ€Π΅Π΄ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ β€” это ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ количСство пСрСраспрСдСлСний памяти.

Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ массива Π·Π°Ρ€Π°Π½Π΅Π΅

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Для КаТдого вмСсто индСксного Ρ†ΠΈΠΊΠ»Π°

Π˜Π·Π±Π΅Π³Π°Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ Π΄ΡƒΠ±Π»Π΅ΠΉ

ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅Π—Π½Π°Ρ‡Π΅Π½ΠΈΡ() послС объСдинСния, Ссли Π½ΡƒΠΆΠ½Ρ‹ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ элСмСнты-->

3. ОбъСдинСниС с ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ΠΎΠ² β€” ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΆΠ½Π° ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

Если Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΌ массивС Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ элСмСнтов, стандартноС объСдинСниС Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚. Π’ 1Π‘ для этого Π΅ΡΡ‚ΡŒ Π΄Π²Π° основных ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°:

  1. ИспользованиС Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅Π—Π½Π°Ρ‡Π΅Π½ΠΈΡ() послС объСдинСния:
    Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = БоСдинСниСМассивов(Массив1, Массив2);
    

    Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉΠ Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅Π—Π½Π°Ρ‡Π΅Π½ΠΈΡ();

    Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ прост, Π½ΠΎ создаёт ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ массив, Ρ‡Ρ‚ΠΎ нСэффСктивно для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ….

  2. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Π΄ΡƒΠ±Π»ΠΈ Π² процСссС добавлСния:
    Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Новый Массив;
    

    Для КаТдого Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Из БоСдинСниСМассивов(Массив1, Массив2) Π¦ΠΈΠΊΠ»

    Если НЕ Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.Найти(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚) Π’ΠΎΠ³Π΄Π°

    Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚);

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

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

    Π‘ΠΎΠ»Π΅Π΅ рСсурсоёмкий, Π½ΠΎ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ памяти.

Для массивов с слоТными Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, структуры ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹) ΠΌΠ΅Ρ‚ΠΎΠ΄ Найти() ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π₯ΡΡˆΠ’Π°Π±Π»ΠΈΡ†Π° для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ:

Π₯эш = Новый БоотвСтствиС;

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Новый Массив;

Для КаТдого Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Из БоСдинСниСМассивов(Массив1, Массив2) Π¦ΠΈΠΊΠ»

Если НЕ Π₯эш.Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ΠšΠ»ΡŽΡ‡(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚.Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉΠ˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€()) Π’ΠΎΠ³Π΄Π°

Π₯эш.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚.Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉΠ˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€(), Π˜ΡΡ‚ΠΈΠ½Π°);

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚);

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

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

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ со ссылочными Ρ‚ΠΈΠΏΠ°ΠΌΠΈ (справочники, Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹) сравнСниС Ρ‡Π΅Ρ€Π΅Π· Найти() провСряСт ссылочноС равСнство, Π° Π½Π΅ содСрТимоС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Для сравнСния ΠΏΠΎ свойствам ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉΠ˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€() ΠΈΠ»ΠΈ создавайтС Ρ…ΡΡˆ ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ полям.

4. ОбъСдинСниС ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов β€” Ρ€Π°Π±ΠΎΡ‚Π° со структурами

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ объСдинСния Π΄Π²ΡƒΡ… Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов (Ρ‚Π°Π±Π»ΠΈΡ†):

Π’Π°Π±Π»ΠΈΡ†Π°1 = Новый Массив;

Π’Π°Π±Π»ΠΈΡ†Π°1.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Новый Массив("Иванов", 1000));

Π’Π°Π±Π»ΠΈΡ†Π°1.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Новый Массив("ΠŸΠ΅Ρ‚Ρ€ΠΎΠ²", 2000));

Π’Π°Π±Π»ΠΈΡ†Π°2 = Новый Массив;

Π’Π°Π±Π»ΠΈΡ†Π°2.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Новый Массив("Π‘ΠΈΠ΄ΠΎΡ€ΠΎΠ²", 1500));

// ОбъСдиняСм строки

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Новый Массив;

Для КаТдого Π‘Ρ‚Ρ€ΠΎΠΊΠ° Из БоСдинСниСМассивов(Π’Π°Π±Π»ΠΈΡ†Π°1, Π’Π°Π±Π»ΠΈΡ†Π°2) Π¦ΠΈΠΊΠ»

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

Для КаТдого Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Из Π‘Ρ‚Ρ€ΠΎΠΊΠ° Π¦ΠΈΠΊΠ»

НоваяБтрока.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚);

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

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(НоваяБтрока);

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

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ассоциативными массивами (ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ БоотвСтствиС:

Π”Π°Π½Π½Ρ‹Π΅1 = Новый БоотвСтствиС;

Π”Π°Π½Π½Ρ‹Π΅1.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ("Π¦Π΅Π½Π°", 1000);

Π”Π°Π½Π½Ρ‹Π΅1.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ("ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ", 5);

Π”Π°Π½Π½Ρ‹Π΅2 = Новый БоотвСтствиС;

Π”Π°Π½Π½Ρ‹Π΅2.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ("Π‘ΠΊΠΈΠ΄ΠΊΠ°", 10);

Π”Π°Π½Π½Ρ‹Π΅2.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ("Π¦Π΅Π½Π°", 1200); // ΠŸΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡˆΠ΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· Π”Π°Π½Π½Ρ‹Π΅1

// ОбъСдинСниС с ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠΌ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ массива

Для КаТдого ΠšΠ»ΡŽΡ‡ Из Π”Π°Π½Π½Ρ‹Π΅2.ΠšΠ»ΡŽΡ‡ΠΈ() Π¦ΠΈΠΊΠ»

Π”Π°Π½Π½Ρ‹Π΅1.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ(ΠšΠ»ΡŽΡ‡, Π”Π°Π½Π½Ρ‹Π΅2.ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ(ΠšΠ»ΡŽΡ‡));

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

ΠœΠ΅Ρ‚ΠΎΠ΄ ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ
БоСдинСниСМассивов() ΠŸΡ€ΠΎΡΡ‚Ρ‹Π΅ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы Π”ΡƒΠ±Π»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ элСмСнты, ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ… ⭐⭐
Π ΡƒΡ‡Π½ΠΎΠΉ Ρ†ΠΈΠΊΠ» Π›ΡŽΠ±Ρ‹Π΅ массивы, Π½ΡƒΠΆΠ½Π° Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ Π‘ΠΎΠ»ΡŒΡˆΠ΅ ΠΊΠΎΠ΄Π°, Π½ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎ ⭐⭐⭐⭐
Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅Π—Π½Π°Ρ‡Π΅Π½ΠΈΡ() Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π΄ΡƒΠ±Π»Π΅ΠΉ послС объСдинСния Π‘ΠΎΠ·Π΄Π°Ρ‘Ρ‚ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ массив ⭐⭐⭐
БоотвСтствиС АссоциативныС массивы, ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ НС сохраняСт порядок элСмСнтов ⭐⭐⭐⭐

5. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ… β€” ΠΊΠΎΠ³Π΄Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Π°

ΠŸΡ€ΠΈ объСдинСнии массивов Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ ΠΎΡ‚ 50 000 элСмСнтов стандартныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ становятся Π½Π΅ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΌΠΈ. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅:

  • πŸš€ ΠŸΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅: вмСсто поэлСмСнтного Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ() ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠŸΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ() с ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ расчётом индСксов:
    Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Новый Массив(Массив1.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() + Массив2.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ());
    

    Для i = 0 По Массив1.Π’Π“Ρ€Π°Π½ΠΈΡ†Π°() Π¦ΠΈΠΊΠ»

    Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.ΠŸΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ(i, Массив1[i]);

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

    Для i = 0 По Массив2.Π’Π“Ρ€Π°Π½ΠΈΡ†Π°() Π¦ΠΈΠΊΠ»

    Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.ΠŸΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ(Массив1.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() + i, Массив2[i]);

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

  • πŸ—ƒοΈ ΠŸΠΎΡ‚ΠΎΠΊΠΎΠ²Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°: Ссли массивы хранятся Π² Π±Π°Π·Π΅, Ρ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ Π΄Π°Π½Π½Ρ‹Π΅ порциями (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎ 1000 элСмСнтов) ΠΈ сразу ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠΉΡ‚Π΅.
  • πŸ”„ ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅: для 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ 8.3.20+ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π€ΠΎΠ½ΠΎΠ²Ρ‹Π΅ задания для распараллСливания объСдинСния.

ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠ°Ρ ошибка ΠΌΠ½ΠΎΠ³ΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ²: использованиС Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ² для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ΠΎΠ² Π² Π±ΠΎΠ»ΡŒΡˆΠΈΡ… массивах. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΈΡ‡Π½ΠΎΠΉ слоТности O(nΒ²) ΠΈ зависанию систСмы. ВмСсто этого всСгда примСняйтС Ρ…ΡΡˆ-Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ (БоотвСтствиС) для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ β€” это сниТаСт ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π΄ΠΎ O(n).

πŸ’‘

Для объСдинСния массивов ΠΈΠ· Ρ€Π°Π·Π½Ρ‹Ρ… Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ консолидации) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ 1Π‘. Они ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с большими Π½Π°Π±ΠΎΡ€Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ индСксы для быстрого поиска Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ΠΎΠ².

6. Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки ΠΈ ΠΊΠ°ΠΊ ΠΈΡ… ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ

Π”Π°ΠΆΠ΅ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ 1Π‘ Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ ошибки ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с массивами. Π’ΠΎΡ‚ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространённыС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΈ ΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ:

  1. ΠŸΠΎΡ‚Π΅Ρ€Ρ Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…:

    ΠŸΡ€ΠΈ объСдинСнии массивов с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, числа ΠΈ строки) 1Π‘ ΠΌΠΎΠΆΠ΅Ρ‚ нСявно ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ значСния. ВсСгда провСряйтС Ρ‚ΠΈΠΏΡ‹:

    Если Π’ΠΈΠΏΠ—Π½Ρ‡(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚) = Π’ΠΈΠΏ("Число") Π’ΠΎΠ³Π΄Π°
    

    Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚);

    Π˜Π½Π°Ρ‡Π΅Π•ΡΠ»ΠΈ Π’ΠΈΠΏΠ—Π½Ρ‡(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚) = Π’ΠΈΠΏ("Π‘Ρ‚Ρ€ΠΎΠΊΠ°") Π’ΠΎΠ³Π΄Π°

    Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Число(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚)); // ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊ числу

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

  2. НСучтённыС пустыС значСния:

    ΠœΠ΅Ρ‚ΠΎΠ΄ БоСдинСниСМассивов() Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ НСопрСдСлСно ΠΈ NULL. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡ… ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ:

    Если Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ <> НСопрСдСлСно И НЕ ΠŸΡƒΡΡ‚Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ°(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚) Π’ΠΎΠ³Π΄Π°
    

    Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚);

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

  3. Ошибки с ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ:

    ΠœΠ°ΡΡΠΈΠ²Ρ‹ Π² 1Π‘ Π½Π΅ потокобСзопасны. ΠŸΡ€ΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΌ объСдинСнии ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠœΡŒΡŽΡ‚Π΅ΠΊΡ:

    ΠœΡŒΡŽΡ‚Π΅ΠΊΡ = Новый ΠœΡŒΡŽΡ‚Π΅ΠΊΡ;
    

    ...

    ΠœΡŒΡŽΡ‚Π΅ΠΊΡ.Π—Π°Ρ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ();

    Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚);

    ΠœΡŒΡŽΡ‚Π΅ΠΊΡ.ΠžΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡ‚ΡŒ();

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π’ Ρ‚ΠΎΠ½ΠΊΠΎΠΌ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ 1Π‘ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ ΠΎΠ±ΡŠΡ‘ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠ΅ΠΆΠ΄Ρƒ сСрвСром ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ. ΠŸΡ€ΠΈ объСдинСнии массивов Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ Π±ΠΎΠ»Π΅Π΅ 10 Мб ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ сСрвСрныС ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈΠ»ΠΈ Ρ€Π°Π·Π±ΠΈΠ²Π°ΠΉΡ‚Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹.
Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Ссли БоСдинСниСМассивов() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ пустой массив?

Π­Ρ‚ΠΎ происходит Ссли ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π½Π΅ являСтся массивом. ВсСгда провСряйтС Ρ‚ΠΈΠΏΡ‹:

Если НЕ Π’ΠΈΠΏΠ—Π½Ρ‡(Массив1) = Π’ΠΈΠΏ("Массив") Π’ΠΎΠ³Π΄Π°

Π’Ρ‹Π·Π²Π°Ρ‚ΡŒΠ˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ "ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π½Π΅ являСтся массивом";

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

FAQ: ΠžΡ‚Π²Π΅Ρ‚Ρ‹ Π½Π° частыС вопросы

МоТно Π»ΠΈ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ массив с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ коллСкциями (БписокЗначСний, Π’Π°Π±Π»ΠΈΡ†Π°Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ)?

ΠŸΡ€ΡΠΌΠΎΠ΅ объСдинСниС Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это Ρ€Π°Π·Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹. ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π² массивы:

Бписок = Новый БписокЗначСний;

Бписок.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("Π­Π»Π΅ΠΌΠ΅Π½Ρ‚1");

Массив = Бписок.Π’Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΠ—Π½Π°Ρ‡Π΅Π½ΠΈΡ(); // ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² массив

Как ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ массивы с сохранСниСм порядка слСдования элСмСнтов?

Ѐункция БоСдинСниСМассивов() сохраняСт порядок: сначала всС элСмСнты ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ массива, Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ. ΠŸΡ€ΠΈ Ρ€ΡƒΡ‡Π½ΠΎΠΌ объСдинСнии порядок зависит ΠΎΡ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ добавлСния Π² Ρ†ΠΈΠΊΠ»Π°Ρ….

ΠŸΠΎΡ‡Π΅ΠΌΡƒ послС объСдинСния массивов с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ 1Π‘ (справочники, Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹) Ρ‚Π΅Ρ€ΡΡŽΡ‚ΡΡ ссылки?

Π­Ρ‚ΠΎ происходит ΠΈΠ·-Π·Π° особСнностСй сСриализации. ВсСгда ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΏΠΎ ссылкС, Π° Π½Π΅ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

Массив1.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊΠΈ.НомСнклатура.ΠΠ°ΠΉΡ‚ΠΈΠŸΠΎΠΠ°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡŽ("Π’ΠΎΠ²Π°Ρ€1"));

// ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ: добавляСм ссылку Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π° Π½Π΅ Π΅Π³ΠΎ копию

Как ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ массивы Π² 1Π‘ 7.7?

Π’ 1Π‘ 7.7 Π½Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ БоСдинСниСМассивов(). Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ€ΡƒΡ‡Π½ΠΎΠΉ Ρ†ΠΈΠΊΠ»:

Для i = 1 По Массив1.Π’Π“Ρ€Π°Π½ΠΈΡ†Π°() Π¦ΠΈΠΊΠ»

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒΠ—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅(Массив1[i]);

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

МоТно Π»ΠΈ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ массивы Ρ€Π°Π·Π½Ρ‹Ρ… размСрностСй (ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ ΠΈ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ)?

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

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ = Новый Массив;

Для КаТдого Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Из ΠžΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉΠœΠ°ΡΡΠΈΠ² Π¦ΠΈΠΊΠ»

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Новый Массив(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚));

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

πŸ’‘

Для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° Π·Π°Π΄Π°Ρ‡ Π² 1Π‘ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ являСтся комбинация Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° с ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ памяти (Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΠ Π°Π·ΠΌΠ΅Ρ€) ΠΈ использованиСм БоотвСтствия для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π­Ρ‚ΠΎ Π΄Π°Ρ‘Ρ‚ баланс ΠΌΠ΅ΠΆΠ΄Ρƒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ ΠΈ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒΡŽ.