In computer programming, an Iliffe vector, also known as a display, is a data structure used to implement jagged arrays.

Data structure

edit

An Iliffe vector for an n-dimensional array (where n ≥ 2) consists of a vector (or 1-dimensional array) of pointers to (n − 1)-dimensional arrays. They are often used to avoid the need for expensive multiplication operations when performing address calculation on an array element. They can also be used to implement jagged arrays, such as triangular arrays, triangular matrices and other kinds of irregularly shaped arrays. The data structure is named after John K. Iliffe.

Their disadvantages include the need for multiple chained pointer indirections to access an element, and the extra work required to determine the next row in an n-dimensional array to allow an optimising compiler to prefetch it. Both of these are a source of delays on systems where the CPU is significantly faster than main memory.

The Iliffe vector for a 2-dimensional array is simply a vector of pointers to vectors of data, i.e., the Iliffe vector represents the columns of an array where each column element is a pointer to a row vector.

Multidimensional arrays in languages such as Java, Python (multidimensional lists), Ruby, Visual Basic .NET, Perl, PHP, JavaScript, Objective-C (when using NSArray, not a row-major C-style array), Swift, and Atlas Autocode are implemented as Iliffe vectors. Iliffe vectors were used to implement sparse multidimensional arrays in the OLAP product Holos.

Iliffe vectors are contrasted with dope vectors in languages such as Fortran, which contain the stride factors and offset values for the subscripts in each dimension.

References

edit
  • John K. Iliffe (1961). "The Use of The Genie System in Numerical Calculations". Annual Review in Automatic Programming. 2: 25. doi:10.1016/S0066-4138(61)80002-5.

Further reading

edit


📚 Artikel Terkait di Wikipedia

John Iliffe

designer) (1931-2020), inventor of the Iliffe vector and pioneer of descriptor-based computer architectures John Iliffe (historian) (born 1939), British professor

Array (data structure)

memory use is typically worse than arrays, but is still linear. An Iliffe vector is an alternative to a multidimensional array structure. It uses a one-dimensional

Jagged array

often used to emulate the latter. Jagged array can be implemented with Iliffe vector data structure in languages such as Java, PHP, Python (multidimensional

Iliffe

Iliffe may mean: Baron Iliffe, a title in the Peerage of the United Kingdom Edward Iliffe, 1st Baron Iliffe Charlotte Iliffe, Baroness Iliffe Langton

List of data structures

Image Dope vector Dynamic array Gap buffer Hashed array tree Lookup table Matrix Parallel array Sorted array Sparse matrix Iliffe vector Variable-length

Dope vector

dope vector. Dope vectors can be a general facility, shared across multiple datatypes (not just arrays and/or strings). Data descriptor Iliffe vector Reflection

John Iliffe (computer designer)

include intrinsic operations on real and complex vectors and matrices. The well-known Iliffe vector storage structure for multi-dimensional and irregular

Irregular matrix

called jagged arrays. Irregular matrices are typically stored using Iliffe vectors. For example, the following is an irregular matrix: [ 1 31 12 − 3 7