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

  • 相关阅读:
    【BZOJ1014】【JSOI2008】火星人prefix
    [agc011e]increasing numbers
    NOIp2018模拟赛四十一
    拉格朗日插值&&快速插值
    NOIp2018模拟赛四十
    (2016北京集训十四)【xsy1557】task
    (2016北京集训十四)【xsy1556】股神小D
    数据泵导入ORA-39082报错解决
    OracleDBA职责—备份与恢复技术—概念
    OracleDBA职责—备份与恢复技术—RMAN3
  • 原文地址:https://www.cnblogs.com/zziss/p/1652760.html
Copyright © 2011-2022 走看看