Описание тега arrays
Массив является упорядоченной линейной структурой данных, состоящий из набора элементов (или значений переменных), каждый из которых определяется по меньшей мере одним индексом, хранятся в смежных ячейках памяти.
Массив обычно хранится таким образом, чтобы положение каждого элемента можно было вычислить из его индексного кортежа с помощью математической формулы.
В некоторых языках (C, Java и т. Д.) Длину массива необходимо задавать заранее. В других языках (Ruby, Python, LISP, Haxe и т. Д.) Длина массива динамически увеличивается по мере добавления элементов.
Отмечая вопрос этим тегом, также пометьте вопрос используемым языком программирования.
Массив на определенных языках
- Массивы C# на самом деле являются объектами, а не просто адресуемыми областями непрерывной памяти, как в C и C++. Массив - это абстрактный базовый тип всех типов массивов. Вы можете использовать свойства и другие члены класса базового типа Array.
- Массивы C хранят связанные данные под одним именем переменной с индексом, также известным как нижний индекс. Они хранятся в порядке возрастания строк, что означает, что последний индекс изменяется быстрее всего. Проще всего представить массив как просто список или упорядоченную группировку переменных одного типа. Таким образом, массивы часто помогают программисту организовать коллекции данных эффективно и интуитивно.
- C++ наследует необработанные массивы от C и добавляет свой собственный класс-массив
std::array
для размеров массива во время компиляции,std::vector
для массивов динамического размера во время выполнения. Он также имеет реализации интеллектуальных указателей, такие какstd::unique_ptr
,std::shared_ptr
. - Objective C наследует необработанные массивы от C и добавляет свой собственный класс-массив
NSArray
а такжеNSMutableArray
для динамических массивов. - Обычный класс массива Ruby называется
array
. - В Python обычный тип данных массива называется
list
, в то время какarray
Тип используется для однородных массивов. - В NumPy есть мощный N-мерный массив с множеством возможностей.
- Массивы PHP реализованы в виде упорядоченных карт, которые могут содержать сочетание числовых или строковых ключей.
- Массивы JavaScript - это просто объекты с другим прототипом ( с дополнительными функциями, более полезными для структур, подобных массиву), со значениями числовых индексов, хранящимися в виде строк (все ключи JavaScript являются строками). В отличие от других объектов, вы не можете использовать точечную нотацию для доступа к клавишам - только квадратную скобку.
- В Haxe у массива есть один параметр типа, соответствующий типу коллекции элементов. Массивы можно создавать с помощью их конструктора
new Array()
или[1, 2, 3]
, но также с использованием понимания массива:[for (i in 0...10) if (i % 2 == 0) i]
. Для хранения фиксированного размера абстрактный типhaxe.ds.Vector
может быть использован, что может быть быстрее, чем Array для некоторых целей, и никогда не будет медленнее. - В Scala обычный класс массива называется
Array
. Чтобы получить элемент из массива, вы используете круглые скобки (в большинстве языков используются квадратные скобки). - В Java массив - это объект-контейнер, который содержит фиксированное количество значений одного типа. Длина массива устанавливается при создании массива. После создания его длина фиксируется.
- В Perl переменные массива обозначаются
@
префикс и массивы объявляются в круглых скобках. Замена приставки на$#
возвращает последний индекс. - В Rust массивы - это группы данных одного типа, которые непрерывны в памяти, поэтому их можно использовать при обмене данными с C. Длина массива фиксирована.
- В Swift - массив, включающий указанные значения, автоматически определяющий тип элемента массива. Swift упрощает создание массивов в вашем коде с помощью литерала массива: просто заключите список значений, разделенных запятыми, квадратными скобками.
- В Паскале объявления массивов определяют диапазон индекса, а не количество элементов; так
parray: array [1..25] of real;
объявляет массив из 25 действительных чисел на основе одного(допустимыми элементами являютсяparray[1]
черезparray[25]
), в то время какparray: array [0..24] of real;
объявляет основанный на нуле('стиль C') массив того же размера (первый элементparray[0]
). Диапазоны индексов массива Паскаля могут включать отрицательные числа!
Характеристики
Элементы массива обычно указываются с нулевым первым индексом, например,myarray[0]
будет представлять первый элемент myarray
.myarray[n]
(где n
- длина массива минус 1) будет представлять последний элемент в массиве. Однако некоторые языки, такие как старый Fortran и Lua, используют 1 в качестве начального индекса.
Некоторые языки (C++, Java, C#) имеют "базовые массивы" и коллекции. Базовые массивы поддерживаются компилятором напрямую, имеют фиксированный размер и обеспечивают доступ к элементам только по индексу. Коллекции, такие как JavaArrayList
, являются классами системной библиотеки, реализованными на основе этих базовых массивов и имеющими широкий спектр различных методов. В таких случаях массивы тегов следует использовать для именования простых массивов.
Массивы могут быть размещены статически или динамически. Способ доступа к массиву и его тип зависят от того, как он объявлен и выделен.
Массивы могут содержать несколько индексов. Например, массив с одним индексом (например,array[0]
) известен как одномерный массив. Если у него два индекса (например,array[0][0]
) он считается двухмерным и может быть визуализирован в виде сетки. Многомерные массивы или, другими словами, массивы с несколькими индексами называются матрицами, или матрица является сингулярной.
Ссылки
- Тип данных массива (Википедия)
- Структура данных массива (Википедия)
- Введение в массивы Java из книги Принстона "Введение в программирование"
- Объект массива NumPy
Связанные теги
Говоря о конкретных вариантах массивов, используйте вместо них следующие связанные теги: