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

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

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

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ Π½ΡƒΠΌΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² коллСкциях 1Π‘

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

Π­Ρ‚ΠΎ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ для всСх Ρ‚ΠΈΠΏΠΎΠ² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ: Π±ΡƒΠ΄ΡŒ Ρ‚ΠΎ Π’Π°Π±Π»ΠΈΡ†Π°Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, БписокЗначСний, Массив ΠΈΠ»ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния Запроса. Ошибка Π² ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ этого ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° часто ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ситуациям «ИндСкс Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Π°ΠΌΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°Β».

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Ρ„ΠΎΡ€ΠΌΠ°ΠΌΠΈ ΠΈ элСмСнтами управлСния, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Π’Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ΅ΠŸΠΎΠ»Π΅, Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Π°Ρ нумСрация для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²ΠΈΠ΄ΠΈΡ‚ строки ΠΏΠΎΠ΄ Π½ΠΎΠΌΠ΅Ρ€Π°ΠΌΠΈ 1, 2, 3, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ значСниями 0, 1, 2. НСобходимо всСгда Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠΎΠΏΡ€Π°Π²ΠΊΡƒ Π½Π° этот сдвиг ΠΏΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ сообщСний ΠΈΠ»ΠΈ Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ.

πŸ’‘

ВсСгда провСряйтС, Π½Π΅ пуста Π»ΠΈ коллСкция, ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ΠΌ ΠΊ элСмСнту ΠΏΠΎ индСксу, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ошибок выполнСния.

Поиск индСкса Π² Π’Π°Π±Π»ΠΈΡ†Π΅Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ БпискСЗначСний

Π‘Π°ΠΌΡ‹ΠΉ распространСнный сцСнарий β€” Ρ€Π°Π±ΠΎΡ‚Π° с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ Π’Π°Π±Π»ΠΈΡ†Π°Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Для поиска ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ строки ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ поля сущСствуСт встроСнный ΠΌΠ΅Ρ‚ΠΎΠ΄ Найти. Он Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ссылку Π½Π° строку, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ индСкс, Π»ΠΈΠ±ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ НСопрСдСлСно, Ссли совпадСний Π½Π΅Ρ‚.

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ использованиС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ИндСкс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ саму строку ΠΊΠ°ΠΊ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚. Π­Ρ‚ΠΎΡ‚ способ ΡƒΠ΄ΠΎΠ±Π΅Π½, Ссли ссылка Π½Π° строку ΡƒΠΆΠ΅ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π° Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π°. Однако ΠΎΠ½ ΠΌΠ΅Π½Π΅Π΅ эффСктивСн ΠΏΡ€ΠΈ поискС ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ поля Π±Π΅Π· ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°, Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠ±Π° ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°.

Π’Π— = Новый Π’Π°Π±Π»ΠΈΡ†Π°Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ;

Π’Π—.Колонки.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("НомСнклатура");

Π’Π—.Колонки.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ");

Π‘Ρ‚Ρ€ΠΎΠΊΠ°1 = Π’Π—.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ();

Π‘Ρ‚Ρ€ΠΎΠΊΠ°1.НомСнклатура = "Π’ΠΎΠ²Π°Ρ€ А";

Π‘Ρ‚Ρ€ΠΎΠΊΠ°1.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ = 10;

// Бпособ 1: Поиск ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ

НайдСннаяБтрока = Π’Π—.Найти("Π’ΠΎΠ²Π°Ρ€ А", "НомСнклатура");

Если НайдСннаяБтрока <> НСопрСдСлСно Π’ΠΎΠ³Π΄Π°

ИндСкс = Π’Π—.ИндСкс(НайдСннаяБтрока);

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("ИндСкс Π½Π°ΠΉΠ΄Π΅Π½: " + ИндСкс);

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

// Бпособ 2: ΠŸΡ€ΡΠΌΠΎΠ΅ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ индСкса извСстной строки

Π˜Π½Π΄Π΅ΠΊΡΠ˜Π·Π²Π΅ΡΡ‚Π½ΠΎΠΉ = Π’Π—.ИндСкс(Π‘Ρ‚Ρ€ΠΎΠΊΠ°1);

Для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° БписокЗначСний Π»ΠΎΠ³ΠΈΠΊΠ° ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Π°. ΠœΠ΅Ρ‚ΠΎΠ΄ ΠΠ°ΠΉΡ‚ΠΈΠŸΠΎΠ—Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ элСмСнт списка, Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ ИндСкс опрСдСляСт Π΅Π³ΠΎ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ. Π Π°Π·Π½ΠΈΡ†Π° лишь Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ список Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Ρ‚Π°Π±Π»ΠΈΡ†Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ β€” ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅.

β˜‘οΈ Алгоритм поиска индСкса

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

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°Ρ… Запроса

Π Π°Π±ΠΎΡ‚Π° с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌΠΈ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠΌΠ΅Π΅Ρ‚ свои Π½ΡŽΠ°Π½ΡΡ‹. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Π’Ρ‹Π±ΠΎΡ€ΠΊΠ°Π˜Π·Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°Π—Π°ΠΏΡ€ΠΎΡΠ° Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ИндСкс Π² явном Π²ΠΈΠ΄Π΅, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ прСдставляСт собой курсор, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°ΡŽΡ‰ΠΈΠΉΡΡ ΠΏΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ строки, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ счСтчик.

ΠŸΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ запроса Π² Ρ†ΠΈΠΊΠ»Π΅ Пока программист обязан ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ вСсти ΡƒΡ‡Π΅Ρ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ. Π­Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ, Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ дисциплины. Π—Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΠΎ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ°Ρ… Π½Π°ΠΉΡ‚ΠΈ строку Π² Π²Ρ‹Π±ΠΎΡ€ΠΊΠ΅ постфактум Π±Π΅Π· сохранСния ссылки β€” курсор двиТСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²ΠΏΠ΅Ρ€Π΅Π΄.

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

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с большими Π²Ρ‹Π±ΠΎΡ€ΠΊΠ°ΠΌΠΈ ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… (Π±ΠΎΠ»Π΅Π΅ 100 000 строк) Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠ° Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ объСма ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π±ΡƒΡ„Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ, Ссли ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ подсчСта индСкса Π² Ρ†ΠΈΠΊΠ»Π΅ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ:

Запрос = Новый Запрос;

Запрос.ВСкст = "ВЫБРАВЬ НомСнклатура.НаимСнованиС Π˜Π— Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ.НомСнклатура КАК НомСнклатура";

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Запрос.Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ();

Π’Ρ‹Π±ΠΎΡ€ΠΊΠ° = Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ();

ИндСкс = 0;

Пока Π’Ρ‹Π±ΠΎΡ€ΠΊΠ°.Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ() Π¦ΠΈΠΊΠ»

// Π—Π΄Π΅ΡΡŒ ИндСкс соотвСтствуСт Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ строки

Если Π’Ρ‹Π±ΠΎΡ€ΠΊΠ°.НаимСнованиС = "НуТный Π’ΠΎΠ²Π°Ρ€" Π’ΠΎΠ³Π΄Π°

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("НайдСно Π½Π° ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ: " + ИндСкс);

ΠŸΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ;

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

ИндСкс = ИндСкс + 1;

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

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ поиска Π² запросС

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ строку Π² ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠΉ Π²Ρ‹Π±ΠΎΡ€ΠΊΠ΅, Π»ΡƒΡ‡ΡˆΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ условиС Π² сам тСкст запроса (WHERE), Ρ‡Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒ всС строки Π² ΠΊΠΎΠ΄Π΅ 1Π‘. Π­Ρ‚ΠΎ ускорит Ρ€Π°Π±ΠΎΡ‚Ρƒ Π² сотни Ρ€Π°Π·.

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ индСкса Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ строки Π² Ρ„ΠΎΡ€ΠΌΠ΅

Π’ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ Ρ„ΠΎΡ€ΠΌ часто Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π·Π°Π΄Π°Ρ‡Π°: ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΡƒΡŽ ΠΈΠΌΠ΅Π½Π½ΠΎ строку Π²Ρ‹Π±Ρ€Π°Π» ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π² Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠΌ ΠΏΠΎΠ»Π΅. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ свойство Π’Π΅ΠΊΡƒΡ‰ΠΈΠ΅Π”Π°Π½Π½Ρ‹Π΅ динамичСского списка ΠΈΠ»ΠΈ нСпосрСдствСнно элСмСнта Ρ„ΠΎΡ€ΠΌΡ‹.

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

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ ссылку Π² Π½ΠΎΠΌΠ΅Ρ€, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ ИндСкс основной Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ динамичСского списка. Π­Ρ‚ΠΎ стандартный ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ взаимодСйствия с интСрфСйсом 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ 8.3 ΠΈ Π²Ρ‹ΡˆΠ΅.

  • πŸ” ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ имя элСмСнта Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ поля Π½Π° Ρ„ΠΎΡ€ΠΌΠ΅.
  • πŸ” ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ„ΠΎΡ€ΠΌΡ‹ Ρ‡Π΅Ρ€Π΅Π· Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹.Π˜ΠΌΡΠ’Π°Π±Π»ΠΈΡ†Ρ‹.Π’Π΅ΠΊΡƒΡ‰ΠΈΠ΅Π”Π°Π½Π½Ρ‹Π΅.
  • πŸ” Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ ИндСкс Ρƒ основного Π½Π°Π±ΠΎΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌΡ‹.

Код ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° события для получСния индСкса Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ строки ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

&ΠΠ°ΠšΠ»ΠΈΠ΅Π½Ρ‚Π΅

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π’Π°Π±Π»ΠΈΡ†Π°_ΠŸΡ€ΠΈΠΠΊΡ‚ΠΈΠ²Π°Ρ†ΠΈΠΈΠ‘Ρ‚Ρ€ΠΎΠΊΠΈ(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚)

ΠžΡΠ½ΠΎΠ²Π½ΡƒΡŽΠ’Π°Π±Π»ΠΈΡ†Π° = ΠžΠ±ΡŠΠ΅ΠΊΡ‚; // Или Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹.Π’Π°Π±Π»ΠΈΡ†Π°.Бписок

ВСкущаяБтрока = Π­Π»Π΅ΠΌΠ΅Π½Ρ‚.Π’Π΅ΠΊΡƒΡ‰ΠΈΠ΅Π”Π°Π½Π½Ρ‹Π΅;

Если ВСкущаяБтрока <> НСопрСдСлСно Π’ΠΎΠ³Π΄Π°

ИндСкс = ΠžΡΠ½ΠΎΠ²Π½ΡƒΡŽΠ’Π°Π±Π»ΠΈΡ†Π°.ИндСкс(ВСкущаяБтрока);

// Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ИндСкс для Π»ΠΎΠ³ΠΈΠΊΠΈ

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

ΠšΠΎΠ½Π΅Ρ†ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹

πŸ’‘

ИндСкс строки Π² Ρ„ΠΎΡ€ΠΌΠ΅ β€” это позиция Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΎΡ‚Π±ΠΎΡ€Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Если ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€, индСкс 0 Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ соотвСтствуСт ΠΏΠ΅Ρ€Π²ΠΎΠΉ записи Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ….

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² поиска ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

Π’Ρ‹Π±ΠΎΡ€ способа получСния индСкса Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ влияСт Π½Π° быстродСйствиС вашСй ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ. ΠŸΡ€ΡΠΌΠΎΠΉ доступ ΠΏΠΎ индСксу (Π’Π—[ИндСкс]) являСтся самым быстрым опСрациям, ΠΈΠΌΠ΅ΡŽΡ‰Π΅ΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ O(1). Поиск ΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Найти ΠΈΠΌΠ΅Π΅Ρ‚ Π»ΠΈΠ½Π΅ΠΉΠ½ΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ O(N).

Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΎ сравнСниС основных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Ρ€Π°Π±ΠΎΡ‚Ρ‹ с позициями строк Π² зависимости ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈ объСма Π΄Π°Π½Π½Ρ‹Ρ….

ΠœΠ΅Ρ‚ΠΎΠ΄ Π’ΠΈΠΏ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ РСкомСндация
Π’Π—.ИндСкс(Π‘Ρ‚Ρ€ΠΎΠΊΠ°) Π’Π°Π±Π»ΠΈΡ†Π°Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ O(N) Для Ρ€Π°Π·ΠΎΠ²Ρ‹Ρ… поисков
Π’Π—.Найти(Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅) Π’Π°Π±Π»ΠΈΡ†Π°Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ O(N) Поиск ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΌΡƒ полю
Π‘Ρ‡Π΅Ρ‚Ρ‡ΠΈΠΊ Π² Ρ†ΠΈΠΊΠ»Π΅ ВыборкаЗапроса O(1) ΠŸΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ
Массив.Найти Массив O(N) Π Π°Π±ΠΎΡ‚Π° с простыми списками

Если Π²Π°ΠΌ трСбуСтся ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½Ρ‹ΠΉ поиск индСксов ΠΏΠΎ Ρ€Π°Π·Π½Ρ‹ΠΌ значСниям Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Π΅, цСлСсообразно ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈΠ½Π΄Π΅ΠΊΡΠ½ΡƒΡŽ структуру ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ БоотвСтствиС (Map), Π³Π΄Π΅ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ поля, Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ β€” индСкс строки.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: НС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ Найти Π²Π½ΡƒΡ‚Ρ€ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΏΠΎ Ρ‚ΠΎΠΉ ΠΆΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Π΅. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΈΡ‡Π½ΠΎΠΉ зависимости Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния (O(N^2)) ΠΈ Ρ€Π΅Π·ΠΊΠΎΠΌΡƒ падСнию ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ….

πŸ“Š Какой ΠΌΠ΅Ρ‚ΠΎΠ΄ поиска Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅ всСго?
ΠœΠ΅Ρ‚ΠΎΠ΄ Найти()
Π ΡƒΡ‡Π½ΠΎΠΉ Ρ†ΠΈΠΊΠ» со счСтчиком
Π˜Π½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡ Ρ‡Π΅Ρ€Π΅Π· БоотвСтствиС
Π’Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠ° Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ

ЧастыС ошибки ΠΈ способы ΠΈΡ… устранСния

Одна ΠΈΠ· самых распространСнных ошибок β€” ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ индСкс строки, которая Π±Ρ‹Π»Π° ΡƒΠ΄Π°Π»Π΅Π½Π° ΠΈΠ· ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ. ПослС Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π£Π΄Π°Π»ΠΈΡ‚ΡŒ всС индСксы ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… строк ΡΠ΄Π²ΠΈΠ³Π°ΡŽΡ‚ΡΡ. Если Π²Ρ‹ сохраняли индСкс Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅Π΄ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ, ΠΎΠ½ станСт Π½Π΅Π²Π°Π»ΠΈΠ΄Π½Ρ‹ΠΌ для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

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

Π’Π°ΠΊΠΆΠ΅ стоит ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ Ρ‚ΠΈΠΏΠ°. ΠœΠ΅Ρ‚ΠΎΠ΄ ИндСкс ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ строки. ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Ρ‚ΡƒΠ΄Π° числа ΠΈΠ»ΠΈ строки (тСкста) Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ выполнСния. ВсСгда провСряйтС Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.

  • ❌ Ошибка: ИспользованиС индСкса послС удалСния элСмСнтов Π±Π΅Π· пСрСсчСта.
  • ❌ Ошибка: ΠŸΡƒΡ‚Π°Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠ˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ (UUID) ΠΈ порядковым Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ.
  • ❌ Ошибка: ΠžΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ Π’Π—[ИндСкс], ΠΊΠΎΠ³Π΄Π° индСкс Ρ€Π°Π²Π΅Π½ ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ().

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

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ Π² зависимости ΠΎΡ‚ вСрсии ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘ ΠΈ Ρ€Π΅ΠΆΠΈΠΌΠ° совмСстимости ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ. ВсСгда ΡΠ²Π΅Ρ€ΡΠΉΡ‚Π΅ΡΡŒ с синтаксичСским ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΠΊΠΎΠΌ вашСй ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ вСрсии.

πŸ’‘

ΠŸΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ строк Π² Ρ†ΠΈΠΊΠ»Π΅ всСгда ΠΈΠ΄ΠΈΡ‚Π΅ ΠΎΡ‚ ΠΊΠΎΠ½Ρ†Π° Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΊ Π½Π°Ρ‡Π°Π»Ρƒ (ΠΎΡ‚ ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ()-1 Π΄ΠΎ 0). Π­Ρ‚ΠΎ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ вас ΠΎΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ со сдвигом индСксов ΠΈ пропуска элСмСнтов.

FAQ: Вопросы ΠΈ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹

Как ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ индСкс послСднСй строки Π² Π’Π°Π±Π»ΠΈΡ†Π΅Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ?

Для этого Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Ρ‡Π΅ΡΡ‚ΡŒ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ ΠΈΠ· количСства строк. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅: Π’Π—.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() - 1. Если Ρ‚Π°Π±Π»ΠΈΡ†Π° пуста, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ -1, Ρ‡Ρ‚ΠΎ слСдуСт ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π² условиях.

МоТно Π»ΠΈ Π½Π°ΠΉΡ‚ΠΈ индСкс строки ΠΏΠΎ нСскольким условиям ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ?

ΠœΠ΅Ρ‚ΠΎΠ΄ Найти ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ имя ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ. Для поиска ΠΏΠΎ нСскольким условиям Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» с ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ всСх условий Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΡ‚Π±ΠΎΡ€ ΠΊ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅Π΄ поиском.

Π§Ρ‚ΠΎ Π²Π΅Ρ€Π½Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ ИндСкс, Ссли строка Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Π° Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ?

ΠœΠ΅Ρ‚ΠΎΠ΄ ИндСкс Π²Π΅Ρ€Π½Π΅Ρ‚ -1, Ссли пСрСданная строка Π½Π΅ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ Π΄Π°Π½Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ списку. Π­Ρ‚ΠΎ сигнал ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ссылка устарСла ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ.

Как ΡƒΠ·Π½Π°Ρ‚ΡŒ индСкс строки Π² рСгистрС свСдСний?

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

ВлияСт Π»ΠΈ сортировка Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π½Π° индСксы строк?

Π”Π°, ΠΌΠ΅Ρ‚ΠΎΠ΄ Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ мСняСт порядок строк Π² памяти. ПослС сортировки индСксы всСх ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½Π½Ρ‹Ρ… элСмСнтов измСнятся Π² соотвСтствии с ΠΈΡ… Π½ΠΎΠ²ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠ΅ΠΉ Π² отсортированном спискС.