zoukankan      html  css  js  c++  java
  • 对数组的总结

    对数组的总结

    RArray          是保存 T或R类对像的

    RPointArray     是保存 T或R类对像的地址的

    RArray 通常用于存储固定长度的对像

    CArrayFixFlat 与 CArrayVarFlat 分别是保存固定和可变长度的对像的,CArrayPtrFlat 是保存指针的

    CArrayPakFlat 用于很少分配时,在堆中存储可变大小的T或R类对像

    CArrayXXXSeg 是通过双向链表存放的,用于经常进行分配的数据对像,Fix、Var、Ptr 与 CArrayXXXFlat 一样

    关于创建与释放:

    RArray  创建时通过 RArray<类型> 变量名 ,创建后通过 CleanupClosePushL() 添加到清除栈,用完后通过 Reset() 清空对像及CleanupStack::PopAndDestroy() 从清除栈中清理

    RPointArray 与 RArray 的创建与释放一样

    两者的查找与排序是通过 TIdentityRelation 及 TLinearOrder实现的,创建时需要传入一用于查找或排序的函数,这种方法适用于自定义的查找或排序

    CArrayXXX 创建时是创建的指针,通过 delete 来回收资源

    查找与排序:

    对于保存对像的有固定的类用于查找或排序 TKeyArrayFix,TKeyArrayVar

    对于保存指针用于查找及排序要从 TKeyArrayFix 派生,一般写成下面的固定格式

    代码
    class TKeyArrayPtr:public TKeyArrayFix
    {
    public:
     inline TKeyArrayPtr(TInt anOffset,TKeyCmpText aType):TKeyArrayFix(anOffset,aType)
     {}
     inline TKeyArrayPtr(TInt aOffset, TKeyCmpText aType, TInt aLength) :
     TKeyArrayFix(aOffset, aType, aLength) {};
        inline TKeyArrayPtr(TInt aOffset, TKeyCmpNumeric aType) : TKeyArrayFix(aOffset, aType) {};
     
    virtual TAny* At(TInt anIndex) const
     {
      
    if (anIndex == KIndexPtr)
       
    return *(TUint8**)iPtr+iKeyOffset;
      
    else
      
    return *(TUint8**)iBase->Ptr(anIndex* sizeof(TUint8**)).Ptr()+iKeyOffset;
     }
     
    };



    安平2009@原创
    qi_jianzhou@126.com

  • 相关阅读:
    NEC的学习笔记
    MVC过滤器中获取实体类属性值
    Facebook Hack 语言 简介
    6.格式化输出(转)
    ProcessBuilder 和 Runtime(转)
    JAVA I/O使用方法(转)
    java中输出流OutputStream 类应用实例(转)
    InputStream、OutputStream、String的相互转换(转)
    海茶3 らぶデス3 入门经典教程
    天将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行拂乱其所为,所以动心忍性,增益其所不能
  • 原文地址:https://www.cnblogs.com/zziss/p/1652760.html
Copyright © 2011-2022 走看看