elisp: Array Type

 
 2.3.7 Array Type
 ----------------
 
 An “array” is composed of an arbitrary number of slots for holding or
 referring to other Lisp objects, arranged in a contiguous block of
 memory.  Accessing any element of an array takes approximately the same
 amount of time.  In contrast, accessing an element of a list requires
 time proportional to the position of the element in the list.  (Elements
 at the end of a list take longer to access than elements at the
 beginning of a list.)
 
    Emacs defines four types of array: strings, vectors, bool-vectors,
 and char-tables.
 
    A string is an array of characters and a vector is an array of
 arbitrary objects.  A bool-vector can hold only ‘t’ or ‘nil’.  These
 kinds of array may have any length up to the largest integer.
 Char-tables are sparse arrays indexed by any valid character code; they
 can hold arbitrary objects.
 
    The first element of an array has index zero, the second element has
 index 1, and so on.  This is called “zero-origin” indexing.  For
 example, an array of four elements has indices 0, 1, 2, and 3.  The
 largest possible index value is one less than the length of the array.
 Once an array is created, its length is fixed.
 
    All Emacs Lisp arrays are one-dimensional.  (Most other programming
 languages support multidimensional arrays, but they are not essential;
 you can get the same effect with nested one-dimensional arrays.)  Each
 type of array has its own read syntax; see the following sections for
 details.
 
    The array type is a subset of the sequence type, and contains the
 string type, the vector type, the bool-vector type, and the char-table
 type.