- 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 — 对应字段的类型
对
您可能关注的文档
最近下载
- 《仪器分析—分光光度计》学科知识考试题库(附答案).docx VIP
- 年产770吨精细化学品改扩建项目(达得利公司)环境影响报告.pdf
- JCT 899-2016 混凝土路缘石.docx VIP
- JB T 3695-2008 电动葫芦桥式起重机 标准.pdf VIP
- 桥梁桩基施工专项方案(新编制) .pdf VIP
- 马拉松赛事赛事组织管理与赛事赛事经济效益评价报告.docx
- (GBT7588 1—2020)电梯制造与安装安全规范.pdf VIP
- 电子焊接培训课件.ppt
- 纪念中国人民抗日战争暨世界反法西斯战争胜利80周年主题党课PPT(优质ppt).pptx VIP
- 管幕顶进施工方法及装置.pdf VIP
文档评论(0)