- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
symbian学习笔记十五:CArray
编辑文档
上一次,我们介绍了RArray和RPointerArray的使用,虽然说我们可以把他们看作是j2me中Vector的替代品(J2ME中是没有ArrayList的),但是,我们从上一次的例子中已经知道,RArray和RPointerArray是没有Delete方法的,换句话说是,只能添加,不能删除(什么啊,只进不出的...)(注,其实可以通过Remove方法进行删除的),因此,我们在实际应用中是无法替代Vector的,那么到底能不能替代呢?答案是肯定的,当然可以!使用CArray就可以了!
比起前面介绍的两个Array类,CArray更加的灵活!
首先来看看存储方式的不同吧~
CArray的存储方式分为连续存储(Flat)和分段存储(Segmented buffer)两种。
对于Flat方式,多用于查找比较频繁的地方。对于Segmented方式,多用于存储空间大小经常发生变化的时候。
由于存在连续存储和分段存储两种不同形式的存储,CArray可根据存储形式和存储内容的不同分为4种。
(1)Fix类型,每个元素都拥有相同的长度。
(2)Var类型,各元素拥有不同的长度,每给对象都保存在各自的堆单元中,数组空间中保存着各个元素的指针。
(3)Pak类型,数组中每个元素都有可变的长度,类似于描述符对象,每个元素前面都有其自身的长度信息。
(4)Ptr类型,指针数组。
在选择存储形式时,要考虑如下问题:
(1)是否需要经常的重新分配
(2)数据元素插入和删除的效率
(3)访问数据成员的速度
?下表中列出了可以使用的CArray类型:
名称? 元素大小? 缓冲器类型? 用法? CArrayFixFlat? 固定大小? 平面? 很少进行分配时,用于存储固定大小的T类和R类对象? CArrayVarFlat? 可变大小? 平面? 很少进行分配时,用于存储可变大小的T类和R类对象? CArrayPtrFlat? 指针? 平面? 很少进行分配时,用于对象指针? CArrayPakFlat? 大小可变(压缩)? 平面? 很少进行分配时,用于在一个堆单元中存储可变大小的T类或R类对象? CArrayFixSeg? 固定大小? 片断? 频繁进行分配时,用于存储固定大小的T类和R类对象? CArrayVarSeg? 可变大小? 片断? 频繁进行分配时,用于存储可变大小的T类和R类对象? CArrayPtrSeg? 指针? 片断? 频繁进行分配时,用于存储对象指针
?从上表中,我们知道了CArray提供了多个版本的类用来提供给用户更多的选择。通常我们常用的有4种:
CArrayVarFlat:存储可变长度元素,存储方式为Flat。
CArrayVarSeg:存储可变长度元素,存储方式为Segment。
CArrayPakFlat:存储固定的或者可变长度的元素,而且每个元素都保留自己的长度信息。
CArrayPtrFlag(此处应为CArrayPtrFlat):存储数组指针,存储方式为Segment。
?下面,我们将使用CArrayFixFlat和CArrayFixSeg来写一个例子,实际上,在下面的那个例子里,两个数组是完全可以互换的,因此,我只需要写一个就足够了。
在给出例子之前,我们还要再讲一下CArray的排序与查找,由于CArray不同于RArray类,因此,在查找与排序方面也是有很大区别的。
对于排序,我们首先要构造一个适当的键,这个键将是你排序的根本,在声明键时要指明排序的类型、字段偏移量和文本长度。其次,将键传入Sort()方法中进行排序。
下表为CArray类不同类型时,所要用到的键类型:
名称? 键类型? 说明? CArrayFixFlat? TKeyArrayFix???? CArrayVarFlat? TKeyArrayVar???? CArrayPtrFlat? TKeyArrayFix派生类? 需要特殊实现? CArrayPkgFlat? TKeyArrayVar???? CArrayFixSeg? TKeyArrayFix???? CArrayVarSeg? TKeyArrayVar???? CArrayPtrSeg? TKeyArrayFix派生类? 需要特殊实现
由于下面的例子中,我们使用了CArrayFixFlat,因此我们的键就是TKeyArrayFix(依照上表),TKeyArrayFix(TInt anOffset,TKeyCmpText aType)。这两个参数是:
TInt anOffset —类中字段的偏移量
TKeyCmpText aType — 对应字段的类型
对
您可能关注的文档
最近下载
- 2025团校入团考100题题库及答案(完整本).pdf VIP
- 现场标识管理规范培训.pptx
- 在全市市场监管工作培训班开班式上的讲话.docx VIP
- KAT 22.1-2024 KAT 22.2-20224矿山隐蔽致灾因素普查规范(第一部分总则和第二部分煤矿).docx VIP
- 职业教育资源与当地产业布局匹配情况调研报告.pdf VIP
- 中药饮片加工与炮制PPT.pptx VIP
- 某液化气站安全现状评价报告-精品.doc VIP
- (完整版)船舶消防管理和检查技术要求 .pdf VIP
- (消防培训)WW船舶消防管理和检查技术要求最全版.doc VIP
- 第二单元 水 复习课 教案 教科版科学三年级上册.docx VIP
原创力文档


文档评论(0)