Describes arrays of packed elements in a flat.
This is a CArrayPakFlat<class T>
object whose
elements can have different lengths but are physically contiguous within a
flat array buffer. Each element is preceded by a TInt
value
to record the length of that element.
A flat buffer always occupies a single cell allocated from the heap and
is always extended by the process of reallocation. A flat array buffer is
implemented using a CBufFlat
object.
The following diagram illustrates how elements are organised within the array buffer:
This kind of array is suitable for a small number of objects or for a moderately large but fixed maximum number of objects. It is not suitable for large arrays with a high turnover of elements.
A packed array has the advantage over a variable flat array in having a
smaller memory overhead for each element. The disadvantage is that the elements
and their preceding TInt
values occupy a single cell which
has a higher risk of reallocation failure in times of low memory availability.
This class is immediately derived from the abstract template
base class CArrayPak<class T>
which is itself derived
from the abstract non-templated base class CArrayPakBase
.