Mapped Vector
A superposition of a contiguous and an associative container.
Description
The container stores pointers to objects (which are themselves heap-allocated). Each element may be optionally owned by the container, in which case it will be deleted upon removal or container destruction. The pointers are stored in a contiguous memory allocation, and thus are accessible through an integral index lookup. In addition, there is a map that provides a key lookup capability to the container if that is the preferred interface.
The container template has four type parameters:
T
is the object type pointed to by container entriesT_PTR
is a pointer-to-T
type which must be eitherT *
(default) orstd::unique_ptr<T>
KEY_TYPE
is the type of key used in associative lookupINDEX_TYPE
is the type used in index lookup
Element access
MappedVector
provides three main types of data access using []
operator:
Index lookup is the fastest way of element random access if the ordinal index is known.
Key lookup is similar to key lookup of any associative container and incurs similar cost.
KeyIndex lookup uses a special type,
KeyIndex
, that contains both a key and an index. Initially the index is unknown and the key is used for the lookup. TheKeyIndex
is modified during lookup, storing the index located. If the user persists theKeyIndex
object, they may reuse it in subsequent accesses and get the benefit of direct index access.
In addition to these, an STL-conformant iterator interface is available via begin()
and end()
methods.
The type iterated over is a key-pointer pair (provided as value_type alias).