symbian中的动态数组有两大类:RArray和CArrayX。
1、CArrayX(CArrayFixFlat,CArrayPakFlat,CArrayVarSeg,CArrayPtrFlat,...6个修饰元素:Fix[定长],Pak[压缩],Var[变长],Ptr[指针],Seg[段],Flat[平坦]
其存储方式分为连续存储(Flat)和分段存储(Segmented buffer)两种。
可以使用的CArray类型:
名称 | 元素大小 | 缓冲器类型 | 用法 |
---|---|---|---|
CArrayFixFlat | 固定大小 | 平面 | 很少进行分配时,用于存储固定大小的T类和R类对象 |
CArrayVarFlat | 可变大小 | 平面 | 很少进行分配时,用于存储可变大小的T类和R类对象 |
CArrayPtrFlat | 指针 | 平面 | 很少进行分配时,用于对象指针 |
CArrayPakFlat | 大小可变(压缩) | 平面 | 很少进行分配时,用于在一个堆单元中存储可变大小的T类或R类对象 |
CArrayFixSeg | 固定大小 | 片断 | 频繁进行分配时,用于存储固定大小的T类和R类对象 |
CArrayVarSeg | 可变大小 | 片断 | 频繁进行分配时,用于存储可变大小的T类和R类对象 |
CArrayPtrSeg | 指针 | 片断 | 频繁进行分配时,用于存储对象指针 |
2、数据长度较大时使用CArrayPtrSeg的实例:
从上表中,我们知道了CArray提供了多个版本的类用来提供给用户更多的选择。通常我们常用的有4种:
CArrayVarFlat:存储可变长度元素,存储方式为Flat。
CArrayVarSeg:存储可变长度元素,存储方式为Segment。
CArrayPakFlat:存储固定的或者可变长度的元素,而且每个元素都保留自己的长度信息。
CArrayPtrSeg:存储数组指针,存储方式为Segment。