IntVector

 

IntVector Overview

An Integer Vector (IntVector) is a Heap object containing zero or more 32 bit integer values.IntVectors allow access to stored integer values using an integer key. An integer vector is a data structure composed of an arbitrary number of integers. Assuming there are n elements in a vector, the elements of the vector are accessed as elements 0 thru n-1. An IntVector also has a tail in the same sense that a Pair has a tail.

This sets an IntVector of four integer values.

(setq X (new Vector: integer: 4 5 2 11 6))

5
2
11
6

The IntVector is a dynamic data type: it can grow to containing new elements or contract as elements are deleted. An element is accessed by an index from 0 to n-1 where n is the number of elements in the IntVector. When an element is added, it is appended to the end.

5
2
11
6
4

Or we might sort the vector

2
4
5
6
11

Or we might delete a key by specify the index of the item to be deleted (2)

2
4
6
11

When to Use

The IntVector is a subtype of the Vector Data Type. The IntVector object is useful for storing integers. The IntVector object is very fast and has minimum memory overhead due to the indexed access of its values. If you require a random access strategy or a keyed access strategy see the Dictionary or Structure data types.

Visual Basic Comparison

An Analytic Information Server IntVector is similar to the single dimensioned dynamic array in Visual Basic. The Visual Basic array is created at compile time (the Visual Basic Array still requires a "ReDim" to specify a dimension), whereas the Analytic Information Server structure is created, expanded, or contracted dynamically at run time.

Dim DayArray(50)

DayArray is an array of Variants with 51 elements indexed, from 0 thru 50.

Constant Form

The IntVector native data type has a constant form. A IntVector constant is enclosed in brackets and preceded by the sharp symbol #(int| ).

For Example:

#(int| 0 1 2 3 4 5 6 7 8 9)

Object Data Types

The IntVector is a Heap Object or an Object Data Type. The Analytic Information Server Object Types are stored in the Heap and are managed by the Heap manager. The Analytic Information Server Heap manager supports object resizing, garbage collection, and anti-fragmentation algorithms so that the user may concentrate on the analysis and modeling of data rather than on memory management. Without exception, all of the Object types are identified by an object id. The object id identifies a block of memory, managed by the Lambda Information Server memory manager, in which the Object's data is stored.

The Analytic Information Server Heap Object and Native Data types can be saved and loaded to and from persistent (disk file) storage at any time. Containers with immediate data are saved on disk in fixed length records equal to the size of the container. Containers with Heap object references are saved in fixed length records, which are automatically expanded to include the contents of the Heap object, and any objects referenced by the Heap object, etc. This feature is called Object Closure Management and is automatic with every Analytic Information Server container database save.

Analytic Information Server containers may be loaded from any database repository record at any time. If the data in the record is immediate, the database load fills the container with the immediate data. If the data in the record is an object closure, the database load fills the container with a Heap object reference, and all of the objects in the record are loaded back into the Heap with the same referential relationships they had when they were saved in the repository.

 

Data Type Examples

The IntVector object can be demonstrated by the following examples.

Example_IntVector_addMethod_020 Example_IntVector_append_007 Example_IntVector_apply_006 Example_IntVector_binaryInsert_005
Example_IntVector_binarySearch_006 Example_IntVector_cdr_007 Example_IntVector_compareEQ_014 Example_IntVector_compareGE_014
Example_IntVector_compareGT_014 Example_IntVector_compareLE_014 Example_IntVector_compareLT_014 Example_IntVector_compareNE_014
Example_IntVector_compare_015 Example_IntVector_comparison_014 Example_IntVector_copy_007 Example_IntVector_defmethod_018
Example_IntVector_delete_010 Example_IntVector_insert_006 Example_IntVector_inside_005 Example_IntVector_isAtom_006
Example_IntVector_isEqual_014 Example_IntVector_isIdentical_013 Example_IntVector_isInside_005 Example_IntVector_isIntegerVector_001
Example_IntVector_isMember_005 Example_IntVector_isObject_008 Example_IntVector_isType_017 Example_IntVector_length_009
Example_IntVector_map_006 Example_IntVector_mapc_006 Example_IntVector_member_005 Example_IntVector_methodsOf_018
Example_IntVector_new_010 Example_IntVector_ref_023 Example_IntVector_remove_005 Example_IntVector_resize_007
Example_IntVector_reverse_004 Example_IntVector_send_016 Example_IntVector_setCdr_007 Example_IntVector_setLastCdr_007
Example_IntVector_setq_020 Example_IntVector_sizeof_015 Example_IntVector_sort_014 Example_IntVector_type_017
Example_IntVector_uniqueInsert_005 Example_IntVector_vectorFill_004