Arrays
******

Constructors and Assignment
===========================

 -- Constructor: Array<T> (void)
     Create an array with no elements.

 -- Constructor: Array<T> (int N [, const T &VAL])
     Create an array with N elements.  If the optional argument VAL is supplied, the elements are initialized to VAL; otherwise, they are left uninitialized.  If N is less than zero, the current error handler is invoked (see Error Handling).

 -- Constructor: Array<T> (const Array<T> &A)
     Create a copy of the ARRAY<T> object A.  Memory for the ARRAY<T> class is managed using a reference counting scheme, so the cost of this operation is independent of the size of the array.

 -- Assignment on Array<T>: Array<T>& operator = (const Array<T> &A)
     Assignment operator.  Memory for the ARRAY<T> class is managed using a reference counting scheme, so the cost of this operation is independent of the size of the array.

 -- Method on Array<T>: int capacity (void) const
 -- Method on Array<T>: int length (void) const
     Return the length of the array.

 -- Method on Array<T>: T& elem (int N)
 -- Method on Array<T>: T& checkelem (int N)
     If N is within the bounds of the array, return a reference to the element indexed by N; otherwise, the current error handler is invoked (see Error Handling).

 -- Indexing on Array<T>: T& operator () (int N)

 -- Method on Array<T>: T elem (int N) const
 -- Method on Array<T>: T checkelem (int N) const
     If N is within the bounds of the array, return the value indexed by N; otherwise, call the current error handler. See Error Handling.

 -- Indexing on Array<T>: T operator () (int N) const

 -- Method on Array<T>: T& xelem (int N)
 -- Method on Array<T>: T xelem (int N) const
     Return a reference to, or the value of, the element indexed by N. These methods never perform bounds checking.

 -- Method on Array<T>: void resize (int N [, const T &VAL])
     Change the size of the array to be N elements.  All elements are unchanged, except that if N is greater than the current size and the optional argument VAL is provided, the additional elements are initialized to VAL; otherwise, any additional elements are left uninitialized.  In the current implementation, if N is less than the current size, the length is updated but no memory is released.

 -- Method on Array<T>: const T* data (void) const

 -- Constructor: Array2<T> Array2<T> Array2 (void)
 -- Constructor: Array2<T> (int N, int M)
 -- Constructor: Array2<T> (int N, int M, const T &VAL)
 -- Constructor: Array2<T> (const Array2<T> &A)
 -- Constructor: Array2<T> (const DiagArray<T> &A)

 -- Assignment on Array2<T>: Array2<T>& operator = (const Array2<T> &A)

 -- Method on Array2<T>: int dim1 (void) const
 -- Method on Array2<T>: int rows (void) const

 -- Method on Array2<T>: int dim2 (void) const
 -- Method on Array2<T>: int cols (void) const
 -- Method on Array2<T>: int columns (void) const

 -- Method on Array2<T>: T& elem (int I, int J)
 -- Method on Array2<T>: T& checkelem (int I, int J)

 -- Indexing on Array2<T>: T& operator () (int I, int J)

 -- Method on Array2<T>: void resize (int N, int M)
 -- Method on Array2<T>: void resize (int N, int M, const T &VAL)

 -- Constructor: Array3<T> (void)
 -- Constructor: Array3<T> (int N, int M, int K)
 -- Constructor: Array3<T> (int N, int M, int K, const T &VAL)
 -- Constructor: Array3<T> (const Array3<T> &A)

 -- Assignment on Array3<T>: Array3<T>& operator = (const Array3<T> &A)

 -- Method on Array3<T>: int dim1 (void) const
 -- Method on Array3<T>: int dim2 (void) const
 -- Method on Array3<T>: int dim3 (void) const

 -- Method on Array3<T>: T& elem (int I, int J, int K)
 -- Method on Array3<T>: T& checkelem (int I, int J, int K)

 -- Indexing on Array3<T>: T& operator () (int I, int J, int K)

 -- Method on Array3<T>: void resize (int N, int M, int K)
 -- Method on Array3<T>: void resize (int N, int M, int K, const T &VAL)

 -- Constructor: DiagArray<T> (void)
 -- Constructor: DiagArray<T> (int N)
 -- Constructor: DiagArray<T> (int N, const T &VAL)
 -- Constructor: DiagArray<T> (int R, int C)
 -- Constructor: DiagArray<T> (int R, int C, const T &VAL)
 -- Constructor: DiagArray<T> (const Array<T> &A)
 -- Constructor: DiagArray<T> (const DiagArray<T> &A)

 -- Assignment on DiagArray<T>&: operator = (const DiagArray<T> &A)

 -- Method on DiagArray<T>: int dim1 (void) const
 -- Method on DiagArray<T>: int rows (void) const

 -- Method on DiagArray<T>: int dim2 (void) const
 -- Method on DiagArray<T>: int cols (void) const
 -- Method on DiagArray<T>: int columns (void) const

 -- Method on DiagArray<T>: T& elem (int R, int C)
 -- Method on DiagArray<T>: T& checkelem (int R, int C)

 -- Indexing on DiagArray<T>: T& operator () (int R, int C)

 -- Method on DiagArray<T>: void resize (int N, int M)
 -- Method on DiagArray<T>: void resize (int N, int M, const T &VAL)