В компьютерном программировании вектор Илиффа , также известный как отображение , представляет собой структуру данных , используемую для реализации многомерных массивов .
Вектор Илиффа для n -мерного массива (где n ≥ 2) состоит из вектора (или одномерного массива) указателей на ( n − 1)-мерный массив. Они часто используются, чтобы избежать необходимости в дорогостоящих операциях умножения при выполнении вычисления адреса для элемента массива. Их также можно использовать для реализации неровных массивов , таких как треугольные массивы , треугольные матрицы и другие виды массивов неправильной формы. Структура данных названа в честь Джона К. Илиффа .
Их недостатки включают необходимость множественных цепочечных указателей для доступа к элементу и дополнительную работу, необходимую для определения следующей строки в n -мерном массиве, чтобы позволить оптимизирующему компилятору предварительно выбрать ее. Оба эти фактора являются источником задержек в системах, где процессор значительно быстрее основной памяти.
Вектор Илиффе для двумерного массива — это просто вектор указателей на векторы данных, т. е. вектор Илиффе представляет столбцы массива, где каждый элемент столбца является указателем на вектор-строку.
Многомерные массивы в таких языках, как Java , Python (многомерные списки), Ruby , Visual Basic .NET , Perl , PHP , JavaScript , Objective-C (при использовании NSArray, а не массива в стиле C с основной строкой ), Swift и Atlas Autocode реализованы как векторы Илиффе. Векторы Илиффе использовались для реализации разреженных многомерных массивов в продукте OLAP Holos .
Векторы Илиффе противопоставляются векторам допинга в таких языках, как Fortran , которые содержат факторы шага и значения смещения для индексов в каждом измерении.