Что такое индекс в одномерном массиве
Перейти к содержимому

Что такое индекс в одномерном массиве

  • автор:

Индексы одномерного массива.

Существует класс задач, в которых индекс массива используется для формализации вычислительного процесса путем сведения исходных формул к конечным суммам и произведениям. Преобразованные таким образом формулы программируются с помощью арифметических циклов. При обращении к элементам массива в качестве индексов можно использовать выражения перечисляемого типа.

Пример 30. Дана последовательность вещественных чисел X1, Х2, X3. Х24. Требуется вычислить U = X1 • Х2 • Х3 • X4 + X4 • Х6 • Х7 • Х8 + . + Х21 • Х22 • X23 • Х24

Для программирования необходимо линейную формулу U преобразовать к следующему виду:

Нетрудно заметить, что задача сведена к двойному арифметическому циклу. Для накопления суммы по I используется переменная U, исходное состояние которой равно 0. Для накопления произведения используется рабочая переменная Р, которая рассчитывается шесть раз для значений индекса I=1,2,…,6. Вы можете скачать realtek hd, новую версию драйверов, которая подойдет для Windows 8.1. Для накопления произведения начальное значение J принимается равным 1.

PROGRAM PR30;
VAR
X: ARRAY [1.. 24] OF REAL;
I, J: INTEGER;
U, P: REAL;
BEGIN
WRITELN(‘Введите массив X, из 24 вещественных чисел’);
FOR I := 1 ТО 24 DO READ(X[I]);
U := 0;
FOR I := 1 TO 6
DO BEGIN
P := 1;
FOR J := 1 TO 4
DO P:=P*X[4*(I-1)+J];
U := U + P
END;
WRITELN(‘U =’, U:10:2)
END.

Индексный массив

Индексный массив (в некоторых языках программирования также таблица, ряд) — именованный набор однотипных переменных, расположенных в памяти непосредственно друг за другом, доступ к которым осуществляется по индексу (в отличие от списка).

Индекс массива — целое число, либо значение типа, приводимого к целому, указывающее на конкретный элемент массива.

В ряде скриптовых языков, например JavaScript, PHP, Ruby применяются также ассоциативные массивы, в которых переменные не обязаны быть однотипными, и доступ к ним не обязательно осуществляется по индексу.

Общее описание

Массив — упорядоченный набор данных, для хранения данных одного типа, идентифицируемых с помощью одного или нескольких индексов. В простейшем случае массив имеет постоянную длину и хранит единицы данных одного и того же типа.

Количество используемых индексов массива может быть различным. Массивы с одним индексом называют одномерными, с двумя — двумерными и т. д. Одномерный массив нестрого соответствует вектору в математике, двумерный — матрице. Чаще всего применяются массивы с одним или двумя индексами, реже — с тремя, ещё большее количество индексов встречается крайне редко.

Пример статического массива на языке Паскале

 a: array [1..15] of Integer; multiArray : array [Byte, 1..5] of Char; rangeArray : array [Word] of String;

Пример статического массива на С/С++

int Array[10]; // Одномерный массив целых чисел размера 10 // Нумерация элементов от 0 до 9 double Array[12][15]; // Двумерный массив вещественных чисел двойной точности // размера 12 на 10. // Нумерация по столбцам от 0 то 11, по строкам от 0 до 14 

Поддержка индексных массивов (свой синтаксис объявления, функции для работы с элементами и т. д.) есть в большинстве высокоуровневых языков программирования. Максимально допустимая размерность массива, типы и диапазоны значений индексов, ограничения на типы элементов определяются языком программирования и/или конкретным транслятором.

В языках программирования, допускающих объявления программистом собственных типов, как правило, существует возможность создания типа «массив». В определении такого типа может указываться размер, тип элемента, диапазон значений и типы индексов. В дальнейшем возможно определение переменных созданного типа. Все такие переменные-массивы имеют одну структуру. Некоторые языки поддерживают для переменных-массивов операции присваивания (когда одной операцией всем элементам массива присваиваются значения соответствующих элементов другого массива).

Объявление типа «массив» в языке Паскаль

type TArrayType = array [0..9] of Integer; (* Объявления типа "массив" *) var arr1, arr2, arr3: TArrayType; (* Объявление трёх переменных-массивов одного типа *) 

Специфические типы массивов

Динамические массивы

Динамическим называется массив, размер которого может меняться во время исполнения программы. Для изменения размера динамического массива язык программирования, поддерживающий такие массивы, должен предоставлять встроенную функцию или оператор. Динамические массивы дают возможность более гибкой работы с данными, так как позволяют не прогнозировать хранимые объёмы данных, а регулировать размер массива в соответствии с реально необходимыми объёмами. Обычные, не динамические массивы называют ещё статическими.

Пример динамического массива на Delphi

byteArray : Array of Byte; // Одномерный массив multiArray : Array of Array of string; // Многомерный массив 

Пример динамического массива на Си

float *array1; // Одномерный массив int **array2; // Двумерный массив array1 = (float*) malloc(10 * sizeof(float)); // выделение 10 блоков по sizeof(float) байт каждый array2 = (int**) malloc(16 * sizeof(int*)); // выделение 16 блоков по sizeof(int*) байт каждый. Сюда будут записаны указатели на одномерные массивы-строки for(i = 0; i  16; i++) array2[i] = (int*) malloc(8 * sizeof(int)); // выделение 8 блоков по sizeof(int) байт каждый. Это одномерные массивы - строки матрицы. 

Пример динамического массива на С++

float *array1; // Одномерный массив int **array2; // Многомерный массив array1 = new float[10]; // выделение 10 блоков размером типа float array2 = new int*[16]; // выделение 16 блоков размером типа указателя на int for(int i = 0; i  16; i++) array2[i] = new int[8]; 

Гетерогенные массивы

Гетерогенным называется массив, в разные элементы которого могут быть непосредственно записаны значения, относящиеся к различным типам данных. Массив, хранящий указатели на значения различных типов, не является гетерогенным, так как собственно хранящиеся в массиве данные относятся к единственному типу — типу «указатель». Гетерогенные массивы удобны как универсальная структура для хранения наборов данных произвольных типов. Отсутствие их поддержки в языке программирования приводит к необходимости реализации более сложных схем хранения данных. С другой стороны, реализация гетерогенности требует усложнения механизма поддержки массивов в трансляторе языка. Гетерогенный массив как встроенный тип данных присутствует в языке PHP.

Массивы массивов

Многомерные массивы, как правило, реализованные как одномерные массивы, каждый элемент которых является ссылкой на другой одномерный массив.

Реализация

Стандартным способом реализации статических массивов с одним типом элементов является следующий:

  1. Под массив выделяется непрерывный блок памяти объёмом S*m1*m2*m3…mn, где S — размер одного элемента, а m1…mn — размеры диапазонов индексов (то есть количество значений, которые может принимать соответствующий индекс).
  2. При обращении к элементу массива A[i1, i2, i3, …, in] адрес соответствующего элемента вычисляется как B+S*((…(i1p*m1+i2p)*m2+…+i(n-1)p)*mn-1+inp), где B — база (адрес начала блока памяти массива), ikp-значение k-го индекса, приведённое к целому с нулевым начальным смещением.

Таким образом, адрес элемента с заданным набором индексов вычисляется так, что время доступа ко всем элементам массива одинаково.

Первый элемент массива, в зависимости от языка программирования, может иметь различный индекс. Различают три основных разновидности массивов: с отсчетом от нуля (zero-based), с отсчетом от единицы (one-based) и с отсчетом от специфического значения заданного программистом (n-based). Отсчет индекса элемента массивов с нуля более характерен для низкоуровневых ЯП, однако этот метод был популяризирован в языках более высокого уровня языком программирования С.

Более сложные типы массивов — динамические и гетерогенные — реализуются сложнее.

Достоинства

  • легкость вычисления адреса элемента по его индексу (поскольку элементы массива располагаются один за другим)
  • одинаковое время доступа ко всем элементам
  • малый размер элементов: они состоят только из информационного поля

Недостатки

  • для статического массива — отсутствие динамики, невозможность удаления или добавления элемента без сдвига других
  • для динамического и/или гетерогенного массива — более низкое (по сравнению с обычным статическим) быстродействие и дополнительные накладные расходы на поддержку динамических свойств и/или гетерогенности.
  • при работе с массивом в стиле C (с указателями) и при отсутствии дополнительных средств контроля — угроза выхода за границы массива и повреждения данных

См. также

  • Ассоциативный массив
  • Дерево отрезков
  • V-список
  • Параллельный массив

Ссылки

  • Массив — Array в Delphi
  • Массив — Array в PHP
  • Массивы в PHP — Индексные, ассоциативные и многомерные массивы
  • Структуры данных

Что такое индекс в одномерном массиве?

Author24 — интернет-сервис помощи студентам

Подскажите пажалуйста, что такое индекс в одномерном массиве?

Добавлено через 3 минуты
Делаю курсовую по Паскаль в виде теста, может кто знает как сделать переход между ответами стрелками. )

Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Как вывести индекс элемента в одномерном массиве?
Доброго времени суток. Кто нибудь может подсказать как вывести индекс элемента в одномерном.

Определить индекс наибольшего элемента в одномерном массиве
Мне дали задачу: на языке с++ записать объявления функций, выполняющих заданные действия. Написать.

Найти индекс элемента, равного 3, в одномерном массиве
Дано одномерный массив размерностью N, найти на каком месте находится элемент который равняется 3.

Найти индекс заданного элемента в одномерном массиве
Ребята, завтра нужно сдать задачи. Сам не успеваю все сделать, поэтому хотел бы попросить вас.

Почетный модератор
64299 / 47594 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181

Лучший ответ

Сообщение было отмечено igdima как решение

Решение

ЦитатаСообщение от igdima Посмотреть сообщение

что такое индекс в одномерном массиве?

Это как номер элемента от начала массива, но не совсем, индексы могут начинаться не с 1, а например с 0 или -100, или вообще быть не численного типа, а например символьного или перечислимого. Но в любом случае индекс показывает порядковое место элемента в массиве, по которому его можно найти.
Например

const a=array[-1..1] of integer=(5,10,-50);

Добавлено через 4 минуты
Вот заготовка для примитивного меню, выбор ответа по тому же принципу.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
uses crt; const kol=3;  vybor:array[1..kol] of string=('Вариант 1','Вариант 2','Вариант 3'); ukaz='Выбор --->'; clear=' '; var i,k:byte; c:char; begin //это не обязательно, чтобы понятно было gotoXY(25,1); write('Порядок работы программы'); gotoXY(20,2); write('Выбор пункта - стрелки вверх, вниз'); gotoXY(20,3); write('Завершение программы Enter'); gotoXY(18,4); write('Для продолжения нажмите любую клавишу'); readkey; clrscr; //основная программа k:=2; gotoXY(11,1); writeln('Меню'); gotoXY(1,k); write(ukaz); for i:=1 to kol do begin gotoXY(12,i+1); write(vybor[i]); end; hidecursor; repeat repeat c:=readkey; until c in [#13, #72, #80]; case c of #72: begin k:=k-1; gotoXY(1,k+1); write(clear); gotoXY(1,k); if k>1 then write(ukaz); if k=1 then begin k:=4; gotoXY(1,2); write(clear); gotoXY(1,k); write(ukaz); end; end; #80: begin k:=k+1; gotoXY(1,k-1); write(clear); gotoXY(1,k); write(ukaz); if k=5 then begin k:=2; gotoXY(1,5); write(clear); gotoXY(1,k); write(ukaz); end; end; #13:exit; end; until c=#13; end.

Array. Index Of Метод

Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.

Выполняет поиск указанного объекта и возвращает индекс первого найденного совпадения в одномерном массиве или диапазоне элементов массива.

Перегрузки

Выполняет поиск указанного объекта внутри всего одномерного массива и возвращает индекс его первого вхождения.

Выполняет поиск указанного объекта в диапазоне элементов одномерного массива и возвращает индекс первого найденного совпадения. Диапазон начинается с указанного индекса и заканчивается концом массива.

Выполняет поиск указанного объекта в диапазоне элементов одномерного массива и возвращает индекс первого найденного совпадения. Диапазон расширяется от указанного индекса заданного числа элементов.

Выполняет поиск указанного объекта в диапазоне элементов одномерного массива и возвращает индекс первого найденного совпадения. Диапазон начинается с указанного индекса и заканчивается концом массива.

Выполняет поиск указанного объекта в диапазоне элементов одномерного массива и возвращает индекс первого найденного совпадения. Диапазон расширяется от указанного индекса заданного числа элементов.

Выполняет поиск указанного объекта внутри всего одномерного массива и возвращает индекс его первого вхождения.

IndexOf(Array, Object)

Выполняет поиск указанного объекта внутри всего одномерного массива и возвращает индекс его первого вхождения.

public: static int IndexOf(Array ^ array, System::Object ^ value);
public static int IndexOf (Array array, object value);
public static int IndexOf (Array array, object? value);
static member IndexOf : Array * obj -> int
Public Shared Function IndexOf (array As Array, value As Object) As Integer
Параметры

Одномерный массив для поиска.

Объект, который требуется найти в array .

Возвращаемое значение

Индекс первого вхождения value в массиве array , если найден. В противном случае — нижняя граница массива минус 1.

Исключения

array имеет значение null .

Массив array является многомерным.

Примеры

В примере вызываются следующие три перегрузки IndexOf метода для поиска индекса строки в массиве строк:

  • IndexOf(Array, Object), чтобы определить первое вхождение строки «the» в строковом массиве.
  • IndexOf(Array, Object, Int32), чтобы определить первое вхождение строки «the» в четвертом и последнем элементах массива строк.
  • IndexOf(Array, Object, Int32, Int32), чтобы определить первое вхождение строки «the» в строковом массиве из элемента, следующего за последним успешным совпадением в конце массива.
using namespace System; void main() < // Create a string array with 3 elements having the same value. array^ strings = < "the", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog", "in", "the", "barn" >; // Display the elements of the array. Console::WriteLine("The array contains the following values:"); for (int i = strings->GetLowerBound(0); i GetUpperBound(0); i++) Console::WriteLine(" []: ", i, strings[i]); // Search for the first occurrence of the duplicated value. String^ searchString = "the"; int index = Array::IndexOf(strings, searchString); Console::WriteLine("The first occurrence of \"\" is at index .", searchString, index); // Search for the first occurrence of the duplicated value in the last section of the array. index = Array::IndexOf( strings, searchString, 4); Console::WriteLine("The first occurrence of \"\" between index 4 and the end is at index .", searchString, index); // Search for the first occurrence of the duplicated value in a section of the array. int position = index + 1; index = Array::IndexOf(strings, searchString, position, strings->GetUpperBound(0) - position + 1); Console::WriteLine("The first occurrence of \"\" between index and index is at index .", searchString, position, strings->GetUpperBound(0), index); > // The example displays the following output: // The array contains the following values: // [ 0]: the // [ 1]: quick // [ 2]: brown // [ 3]: fox // [ 4]: jumps // [ 5]: over // [ 6]: the // [ 7]: lazy // [ 8]: dog // [ 9]: in // [10]: the // [11]: barn // The first occurrence of "the" is at index 0. // The first occurrence of "the" between index 4 and the end is at index 6. // The first occurrence of "the" between index 7 and index 11 is at index 10. 
// Create a string array with 3 elements having the same value. let strings = [| "the"; "quick"; "brown"; "fox"; "jumps"; "over" "the"; "lazy"; "dog"; "in"; "the"; "barn" |] // Display the elements of the array. printfn "The array contains the following values:" for i = strings.GetLowerBound 0 to strings.GetUpperBound 0 do printfn $" []: " // Search for the first occurrence of the duplicated value. let searchString = "the" let index = Array.IndexOf(strings, searchString) printfn $"The first occurrence of \"\" is at index ." // Search for the first occurrence of the duplicated value in the last section of the array. let index = Array.IndexOf(strings, searchString, 4) printfn $"The first occurrence of \"\" between index 4 and the end is at index ." // Search for the first occurrence of the duplicated value in a section of the array. let position = index + 1 let index = Array.IndexOf(strings, searchString, position, strings.GetUpperBound 0 - position + 1) printfn $"The first occurrence of \"\" between index and index is at index ." // The example displays the following output: // The array contains the following values: // [ 0]: the // [ 1]: quick // [ 2]: brown // [ 3]: fox // [ 4]: jumps // [ 5]: over // [ 6]: the // [ 7]: lazy // [ 8]: dog // [ 9]: in // [10]: the // [11]: barn // The first occurrence of "the" is at index 0. // The first occurrence of "the" between index 4 and the end is at index 6. // The first occurrence of "the" between index 7 and index 11 is at index 10. 
// Create a string array with 3 elements having the same value. String[] strings = < "the", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog", "in", "the", "barn" >; // Display the elements of the array. Console.WriteLine("The array contains the following values:"); for (int i = strings.GetLowerBound(0); i ]: ", i, strings[i]); // Search for the first occurrence of the duplicated value. string searchString = "the"; int index = Array.IndexOf(strings, searchString); Console.WriteLine("The first occurrence of \"\" is at index .", searchString, index); // Search for the first occurrence of the duplicated value in the last section of the array. index = Array.IndexOf(strings, searchString, 4); Console.WriteLine("The first occurrence of \"\" between index 4 and the end is at index .", searchString, index); // Search for the first occurrence of the duplicated value in a section of the array. int position = index + 1; index = Array.IndexOf(strings, searchString, position, strings.GetUpperBound(0) - position + 1); Console.WriteLine("The first occurrence of \"\" between index and index is at index .", searchString, position, strings.GetUpperBound(0), index); // The example displays the following output: // The array contains the following values: // [ 0]: the // [ 1]: quick // [ 2]: brown // [ 3]: fox // [ 4]: jumps // [ 5]: over // [ 6]: the // [ 7]: lazy // [ 8]: dog // [ 9]: in // [10]: the // [11]: barn // The first occurrence of "the" is at index 0. // The first occurrence of "the" between index 4 and the end is at index 6. // The first occurrence of "the" between index 7 and index 11 is at index 10. 
Public Module Example Public Sub Main() ' Create a string array with 3 elements having the same value. Dim strings() As String = < "the", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog", "in", "the", "barn" >' Display the values of the array. Console.WriteLine("The array contains the following values:") For i As Integer = strings.GetLowerBound(0) To strings.GetUpperBound(0) Console.WriteLine(" []: ", i, strings(i)) Next ' Search for the first occurrence of the duplicated value. Dim searchString As String = "the" Dim index As Integer = Array.IndexOf(strings, searchString) Console.WriteLine("The first occurrence of """" is at index .", searchString, index) ' Search for the first occurrence of the duplicated value in the last section of the array. index = Array.IndexOf(strings, searchString, 4) Console.WriteLine("The first occurrence of """" between index 4 and the end is at index .", searchString, index) ' Search for the first occurrence of the duplicated value in a section of the array. Dim position As Integer = index + 1 index = Array.IndexOf(strings, searchString, position, strings.GetUpperBound(0) - position + 1) Console.WriteLine("The first occurrence of """" between index and index is at index .", searchString, position, strings.GetUpperBound(0), index) End Sub End Module ' The example displays the following output: ' The array contains the following values: ' [ 0]: the ' [ 1]: quick ' [ 2]: brown ' [ 3]: fox ' [ 4]: jumps ' [ 5]: over ' [ 6]: the ' [ 7]: lazy ' [ 8]: dog ' [ 9]: in ' [10]: the ' [11]: barn ' The first occurrence of "the" is at index 0. ' The first occurrence of "the" between index 4 and the end is at index 6. ' The first occurrence of "the" between index 7 and index 11 is at index 10. 

Комментарии

Этот метод выполняет поиск по всем элементам одномерного массива . value Чтобы определить, существует ли value в array , метод выполняет сравнение на равенство, вызывая метод каждого элемента Equals , пока не найдет совпадение. Это означает, что если элемент переопределяет Object.Equals(Object) метод, вызывается это переопределение.

Так как большинство массивов имеют нижнюю границу, равную нулю, этот метод обычно возвращает значение -1, если value не найден. В редких случаях, когда нижняя граница массива равна Int32.MinValue(0x80000000) и value не найдена, этот метод возвращает Int32.MaxValue (0x7FFFFFFF).

Этот метод является операцией O( n ), где n — из Length array .

См. также раздел

Применяется к

IndexOf(Array, Object, Int32)

Выполняет поиск указанного объекта в диапазоне элементов одномерного массива и возвращает индекс первого найденного совпадения. Диапазон начинается с указанного индекса и заканчивается концом массива.

public: static int IndexOf(Array ^ array, System::Object ^ value, int startIndex);
public static int IndexOf (Array array, object value, int startIndex);
public static int IndexOf (Array array, object? value, int startIndex);
static member IndexOf : Array * obj * int -> int
Public Shared Function IndexOf (array As Array, value As Object, startIndex As Integer) As Integer
Параметры

Одномерный массив для поиска.

Объект, который требуется найти в array .

startIndex Int32

Начальный индекс поиска. Значение 0 (ноль) действительно в пустом массиве.

Возвращаемое значение

Индекс первого вхождения значения value в диапазоне элементов массива array , начинающемся с элемента с индексом startIndex и заканчивающемся последним элементом, если значение найдено; в противном случае нижняя граница массива минус 1.

Исключения

array имеет значение null .

startIndex находится вне диапазона допустимых индексов для array .

Массив array является многомерным.

Примеры

В примере вызываются следующие три перегрузки IndexOf метода для поиска индекса строки в массиве строк:

  • IndexOf(Array, Object), чтобы определить первое вхождение строки «the» в строковом массиве.
  • IndexOf(Array, Object, Int32), чтобы определить первое вхождение строки «the» в четвертом и последнем элементах массива строк.
  • IndexOf(Array, Object, Int32, Int32), чтобы определить первое вхождение строки «the» в строковом массиве из элемента, следующего за последним успешным совпадением в конце массива.
using namespace System; void main() < // Create a string array with 3 elements having the same value. array^ strings = < "the", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog", "in", "the", "barn" >; // Display the elements of the array. Console::WriteLine("The array contains the following values:"); for (int i = strings->GetLowerBound(0); i GetUpperBound(0); i++) Console::WriteLine(" []: ", i, strings[i]); // Search for the first occurrence of the duplicated value. String^ searchString = "the"; int index = Array::IndexOf(strings, searchString); Console::WriteLine("The first occurrence of \"\" is at index .", searchString, index); // Search for the first occurrence of the duplicated value in the last section of the array. index = Array::IndexOf( strings, searchString, 4); Console::WriteLine("The first occurrence of \"\" between index 4 and the end is at index .", searchString, index); // Search for the first occurrence of the duplicated value in a section of the array. int position = index + 1; index = Array::IndexOf(strings, searchString, position, strings->GetUpperBound(0) - position + 1); Console::WriteLine("The first occurrence of \"\" between index and index is at index .", searchString, position, strings->GetUpperBound(0), index); > // The example displays the following output: // The array contains the following values: // [ 0]: the // [ 1]: quick // [ 2]: brown // [ 3]: fox // [ 4]: jumps // [ 5]: over // [ 6]: the // [ 7]: lazy // [ 8]: dog // [ 9]: in // [10]: the // [11]: barn // The first occurrence of "the" is at index 0. // The first occurrence of "the" between index 4 and the end is at index 6. // The first occurrence of "the" between index 7 and index 11 is at index 10. 
// Create a string array with 3 elements having the same value. let strings = [| "the"; "quick"; "brown"; "fox"; "jumps"; "over" "the"; "lazy"; "dog"; "in"; "the"; "barn" |] // Display the elements of the array. printfn "The array contains the following values:" for i = strings.GetLowerBound 0 to strings.GetUpperBound 0 do printfn $" []: " // Search for the first occurrence of the duplicated value. let searchString = "the" let index = Array.IndexOf(strings, searchString) printfn $"The first occurrence of \"\" is at index ." // Search for the first occurrence of the duplicated value in the last section of the array. let index = Array.IndexOf(strings, searchString, 4) printfn $"The first occurrence of \"\" between index 4 and the end is at index ." // Search for the first occurrence of the duplicated value in a section of the array. let position = index + 1 let index = Array.IndexOf(strings, searchString, position, strings.GetUpperBound 0 - position + 1) printfn $"The first occurrence of \"\" between index and index is at index ." // The example displays the following output: // The array contains the following values: // [ 0]: the // [ 1]: quick // [ 2]: brown // [ 3]: fox // [ 4]: jumps // [ 5]: over // [ 6]: the // [ 7]: lazy // [ 8]: dog // [ 9]: in // [10]: the // [11]: barn // The first occurrence of "the" is at index 0. // The first occurrence of "the" between index 4 and the end is at index 6. // The first occurrence of "the" between index 7 and index 11 is at index 10. 
// Create a string array with 3 elements having the same value. String[] strings = < "the", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog", "in", "the", "barn" >; // Display the elements of the array. Console.WriteLine("The array contains the following values:"); for (int i = strings.GetLowerBound(0); i ]: ", i, strings[i]); // Search for the first occurrence of the duplicated value. string searchString = "the"; int index = Array.IndexOf(strings, searchString); Console.WriteLine("The first occurrence of \"\" is at index .", searchString, index); // Search for the first occurrence of the duplicated value in the last section of the array. index = Array.IndexOf(strings, searchString, 4); Console.WriteLine("The first occurrence of \"\" between index 4 and the end is at index .", searchString, index); // Search for the first occurrence of the duplicated value in a section of the array. int position = index + 1; index = Array.IndexOf(strings, searchString, position, strings.GetUpperBound(0) - position + 1); Console.WriteLine("The first occurrence of \"\" between index and index is at index .", searchString, position, strings.GetUpperBound(0), index); // The example displays the following output: // The array contains the following values: // [ 0]: the // [ 1]: quick // [ 2]: brown // [ 3]: fox // [ 4]: jumps // [ 5]: over // [ 6]: the // [ 7]: lazy // [ 8]: dog // [ 9]: in // [10]: the // [11]: barn // The first occurrence of "the" is at index 0. // The first occurrence of "the" between index 4 and the end is at index 6. // The first occurrence of "the" between index 7 and index 11 is at index 10. 
Public Module Example Public Sub Main() ' Create a string array with 3 elements having the same value. Dim strings() As String = < "the", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog", "in", "the", "barn" >' Display the values of the array. Console.WriteLine("The array contains the following values:") For i As Integer = strings.GetLowerBound(0) To strings.GetUpperBound(0) Console.WriteLine(" []: ", i, strings(i)) Next ' Search for the first occurrence of the duplicated value. Dim searchString As String = "the" Dim index As Integer = Array.IndexOf(strings, searchString) Console.WriteLine("The first occurrence of """" is at index .", searchString, index) ' Search for the first occurrence of the duplicated value in the last section of the array. index = Array.IndexOf(strings, searchString, 4) Console.WriteLine("The first occurrence of """" between index 4 and the end is at index .", searchString, index) ' Search for the first occurrence of the duplicated value in a section of the array. Dim position As Integer = index + 1 index = Array.IndexOf(strings, searchString, position, strings.GetUpperBound(0) - position + 1) Console.WriteLine("The first occurrence of """" between index and index is at index .", searchString, position, strings.GetUpperBound(0), index) End Sub End Module ' The example displays the following output: ' The array contains the following values: ' [ 0]: the ' [ 1]: quick ' [ 2]: brown ' [ 3]: fox ' [ 4]: jumps ' [ 5]: over ' [ 6]: the ' [ 7]: lazy ' [ 8]: dog ' [ 9]: in ' [10]: the ' [11]: barn ' The first occurrence of "the" is at index 0. ' The first occurrence of "the" between index 4 and the end is at index 6. ' The first occurrence of "the" between index 7 and index 11 is at index 10. 

Комментарии

Этот метод выполняет поиск одномерного массива от элемента по индексу startIndex до последнего элемента. Чтобы определить, существует ли value в array , метод выполняет сравнение на равенство, вызывая Equals метод каждого элемента, пока не найдет совпадение. Это означает, что если элемент переопределяет Object.Equals(Object) метод, вызывается это переопределение.

Так как большинство массивов имеют нижнюю границу, равную нулю, этот метод обычно возвращает значение -1, если value не найден. В редких случаях, когда нижняя граница массива равна Int32.MinValue(0x80000000) и value не найдена, этот метод возвращает Int32.MaxValue (0x7FFFFFFF).

Если startIndex равно Array.Length, метод возвращает значение -1. Если startIndex значение больше Array.Length, метод создает исключение ArgumentOutOfRangeException.

Этот метод является операцией O( n ), где n — количество элементов от startIndex до конца array .

См. также раздел

  • LastIndexOf
  • Выполнение строковых операций без учета языка и региональных параметров в массивах

Применяется к

IndexOf(Array, Object, Int32, Int32)

Выполняет поиск указанного объекта в диапазоне элементов одномерного массива и возвращает индекс первого найденного совпадения. Диапазон расширяется от указанного индекса заданного числа элементов.

public: static int IndexOf(Array ^ array, System::Object ^ value, int startIndex, int count);
public static int IndexOf (Array array, object value, int startIndex, int count);
public static int IndexOf (Array array, object? value, int startIndex, int count);
static member IndexOf : Array * obj * int * int -> int
Public Shared Function IndexOf (array As Array, value As Object, startIndex As Integer, count As Integer) As Integer
Параметры

Одномерный массив для поиска.

Объект, который требуется найти в array .

startIndex Int32

Начальный индекс поиска. Значение 0 (ноль) действительно в пустом массиве.

Число искомых элементов.

Возвращаемое значение

Индекс первого вхождения значения value в диапазоне элементов массива array , начинающемся с индекса startIndex и заканчивающемся элементом с индексом startIndex + count — 1, если значение найдено. В противном случае нижняя граница массива минус 1.

Исключения

array имеет значение null .

startIndex находится вне диапазона допустимых индексов для array .

Значение параметра count меньше нуля.

startIndex и count не указывают допустимый раздел в array .

Массив array является многомерным.

Примеры

В примере вызываются следующие три перегрузки IndexOf метода для поиска индекса строки в массиве строк:

  • IndexOf(Array, Object), чтобы определить первое вхождение строки «the» в строковом массиве.
  • IndexOf(Array, Object, Int32), чтобы определить первое вхождение строки «the» в четвертом и последнем элементах массива строк.
  • IndexOf(Array, Object, Int32, Int32), чтобы определить первое вхождение строки «the» в строковом массиве из элемента, следующего за последним успешным совпадением в конце массива. Чтобы определить значение аргумента count , он вычитает верхнюю границу массива из начального индекса и добавляет один.
using namespace System; void main() < // Create a string array with 3 elements having the same value. array^ strings = < "the", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog", "in", "the", "barn" >; // Display the elements of the array. Console::WriteLine("The array contains the following values:"); for (int i = strings->GetLowerBound(0); i GetUpperBound(0); i++) Console::WriteLine(" []: ", i, strings[i]); // Search for the first occurrence of the duplicated value. String^ searchString = "the"; int index = Array::IndexOf(strings, searchString); Console::WriteLine("The first occurrence of \"\" is at index .", searchString, index); // Search for the first occurrence of the duplicated value in the last section of the array. index = Array::IndexOf( strings, searchString, 4); Console::WriteLine("The first occurrence of \"\" between index 4 and the end is at index .", searchString, index); // Search for the first occurrence of the duplicated value in a section of the array. int position = index + 1; index = Array::IndexOf(strings, searchString, position, strings->GetUpperBound(0) - position + 1); Console::WriteLine("The first occurrence of \"\" between index and index is at index .", searchString, position, strings->GetUpperBound(0), index); > // The example displays the following output: // The array contains the following values: // [ 0]: the // [ 1]: quick // [ 2]: brown // [ 3]: fox // [ 4]: jumps // [ 5]: over // [ 6]: the // [ 7]: lazy // [ 8]: dog // [ 9]: in // [10]: the // [11]: barn // The first occurrence of "the" is at index 0. // The first occurrence of "the" between index 4 and the end is at index 6. // The first occurrence of "the" between index 7 and index 11 is at index 10. 
// Create a string array with 3 elements having the same value. let strings = [| "the"; "quick"; "brown"; "fox"; "jumps"; "over" "the"; "lazy"; "dog"; "in"; "the"; "barn" |] // Display the elements of the array. printfn "The array contains the following values:" for i = strings.GetLowerBound 0 to strings.GetUpperBound 0 do printfn $" []: " // Search for the first occurrence of the duplicated value. let searchString = "the" let index = Array.IndexOf(strings, searchString) printfn $"The first occurrence of \"\" is at index ." // Search for the first occurrence of the duplicated value in the last section of the array. let index = Array.IndexOf(strings, searchString, 4) printfn $"The first occurrence of \"\" between index 4 and the end is at index ." // Search for the first occurrence of the duplicated value in a section of the array. let position = index + 1 let index = Array.IndexOf(strings, searchString, position, strings.GetUpperBound 0 - position + 1) printfn $"The first occurrence of \"\" between index and index is at index ." // The example displays the following output: // The array contains the following values: // [ 0]: the // [ 1]: quick // [ 2]: brown // [ 3]: fox // [ 4]: jumps // [ 5]: over // [ 6]: the // [ 7]: lazy // [ 8]: dog // [ 9]: in // [10]: the // [11]: barn // The first occurrence of "the" is at index 0. // The first occurrence of "the" between index 4 and the end is at index 6. // The first occurrence of "the" between index 7 and index 11 is at index 10. 
// Create a string array with 3 elements having the same value. String[] strings = < "the", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog", "in", "the", "barn" >; // Display the elements of the array. Console.WriteLine("The array contains the following values:"); for (int i = strings.GetLowerBound(0); i ]: ", i, strings[i]); // Search for the first occurrence of the duplicated value. string searchString = "the"; int index = Array.IndexOf(strings, searchString); Console.WriteLine("The first occurrence of \"\" is at index .", searchString, index); // Search for the first occurrence of the duplicated value in the last section of the array. index = Array.IndexOf(strings, searchString, 4); Console.WriteLine("The first occurrence of \"\" between index 4 and the end is at index .", searchString, index); // Search for the first occurrence of the duplicated value in a section of the array. int position = index + 1; index = Array.IndexOf(strings, searchString, position, strings.GetUpperBound(0) - position + 1); Console.WriteLine("The first occurrence of \"\" between index and index is at index .", searchString, position, strings.GetUpperBound(0), index); // The example displays the following output: // The array contains the following values: // [ 0]: the // [ 1]: quick // [ 2]: brown // [ 3]: fox // [ 4]: jumps // [ 5]: over // [ 6]: the // [ 7]: lazy // [ 8]: dog // [ 9]: in // [10]: the // [11]: barn // The first occurrence of "the" is at index 0. // The first occurrence of "the" between index 4 and the end is at index 6. // The first occurrence of "the" between index 7 and index 11 is at index 10. 
Public Module Example Public Sub Main() ' Create a string array with 3 elements having the same value. Dim strings() As String = < "the", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog", "in", "the", "barn" >' Display the values of the array. Console.WriteLine("The array contains the following values:") For i As Integer = strings.GetLowerBound(0) To strings.GetUpperBound(0) Console.WriteLine(" []: ", i, strings(i)) Next ' Search for the first occurrence of the duplicated value. Dim searchString As String = "the" Dim index As Integer = Array.IndexOf(strings, searchString) Console.WriteLine("The first occurrence of """" is at index .", searchString, index) ' Search for the first occurrence of the duplicated value in the last section of the array. index = Array.IndexOf(strings, searchString, 4) Console.WriteLine("The first occurrence of """" between index 4 and the end is at index .", searchString, index) ' Search for the first occurrence of the duplicated value in a section of the array. Dim position As Integer = index + 1 index = Array.IndexOf(strings, searchString, position, strings.GetUpperBound(0) - position + 1) Console.WriteLine("The first occurrence of """" between index and index is at index .", searchString, position, strings.GetUpperBound(0), index) End Sub End Module ' The example displays the following output: ' The array contains the following values: ' [ 0]: the ' [ 1]: quick ' [ 2]: brown ' [ 3]: fox ' [ 4]: jumps ' [ 5]: over ' [ 6]: the ' [ 7]: lazy ' [ 8]: dog ' [ 9]: in ' [10]: the ' [11]: barn ' The first occurrence of "the" is at index 0. ' The first occurrence of "the" between index 4 and the end is at index 6. ' The first occurrence of "the" between index 7 and index 11 is at index 10. 

Комментарии

Этот метод выполняет поиск элементов одномерного массива от startIndex до startIndex плюс count минус 1, если count больше 0. Чтобы определить, существует ли value в array , метод выполняет сравнение на равенство, вызывая Equals метод каждого элемента, пока не найдет совпадение. Это означает, что если элемент переопределяет Object.Equals метод, вызывается это переопределение.

Так как большинство массивов имеют нижнюю границу, равная нулю, этот метод обычно возвращает -1, если value не найден. В редких случаях, когда нижняя граница массива равна Int32.MinValue (0x80000000) и value не найдена, этот метод возвращает Int32.MaxValue (0x7FFFFFFF).

Если startindex равно Array.Length, метод возвращает значение -1. Если startIndex значение больше Array.Length, метод создает исключение ArgumentOutOfRangeException.

Этот метод является операцией O( n ), где n имеет значение count .

См. также раздел

  • LastIndexOf
  • Выполнение строковых операций без учета языка и региональных параметров в массивах

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *