亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? arrays.h

?? uc/os 很好的學習代碼
?? H
?? 第 1 頁 / 共 3 頁
字號:
/*------------------------------------------------------------------------*/
/*                                                                        */
/*  ARRAYS.H                                                              */
/*                                                                        */
/*  Copyright Borland International 1991                                  */
/*  All Rights Reserved                                                   */
/*                                                                        */
/*------------------------------------------------------------------------*/

#if !defined( __ARRAYS_H )
#define __ARRAYS_H

#define TEMPLATES

#if !defined( ___DEFS_H )
#include <_defs.h>
#endif  // ___DEFS_H

#if !defined( __RESOURCE_H )
#include <Resource.h>
#endif  // __RESOURCE_H

#if !defined( __COLLECT_H )
#include <Collect.h>
#endif  // __COLLECT_H

#if !defined( __MEM_H )
#include <Mem.h>
#endif  // __MEM_H

#if !defined( __VECTIMP_H )
#include <VectImp.h>
#endif  // __VECTIMP_H

#if !defined( __SORTABLE_H )
#include <Sortable.h>
#endif  // __SORTABLE_H

#if !defined( __ABSTARRY_H )
#include <AbstArry.h>
#endif  // __ABSTARRY_H

#pragma warn -ncf

/*------------------------------------------------------------------------*/
/*                                                                        */
/*  template <class Vect, class T> class BI_ArrayAsVectorImp              */
/*                                                                        */
/*  Implements the fundamental array operations, using a vector           */
/*  as the underlying implementation.  The type Vect specifies the        */
/*  form of the vector, either a BI_CVectorImp<T0> or a                   */
/*  BI_ICVectorImp<T0>.  The type T specifies the type of the             */
/*  objects to be put in the array.  When using BI_CVectorImp<T0>,        */
/*  T should be the same as T0. When using BI_ICVectorImp<T0>, T          */
/*  should be of type pointer to T0.  See BI_ArrayAsVector and            */
/*  BI_IArrayAsVector for examples.                                       */
/*                                                                        */
/*------------------------------------------------------------------------*/

template <class Vect, class T>
class _CLASSTYPE BI_ArrayAsVectorImp
{

public:

    BI_ArrayAsVectorImp( int upper, int lower, int delta ) :
        data( upper-lower+1,delta),
        lowerbound(lower)
        {
        }

    int lowerBound() const
        {
        return lowerbound;
        }

    int upperBound() const
        {
        return boundBase(data.limit())-1;
        }

    sizeType arraySize() const
        {
        return data.limit();
        }

    void add( T t )
        {
        data.add( t );
        }

    void addAt( T t, int loc )
        {
        data.addAt( t, zeroBase(loc) );
        }

    void detach( T t, TShouldDelete::DeleteType dt = TShouldDelete::NoDelete )
        {
        data.detach( t, dt );
        }

    void detach( int loc,
                 TShouldDelete::DeleteType dt =TShouldDelete::NoDelete
               )
        {
        data.detach( zeroBase(loc), dt );
        }

    void destroy( int i )
        {
        detach( i, TShouldDelete::Delete );
        }

    void flush( TShouldDelete::DeleteType dt = TShouldDelete::DefDelete )
        {
        data.flush( dt );
        }

    int isFull() const
        {
        return data.getDelta() == 0 && data.count() >= data.limit();
        }

    int hasMember( T t ) const
        {
        return data.find(t) != UINT_MAX;
        }

    int isEmpty() const
        {
        return data.count() == 0;
        }

    countType getItemsInContainer() const
        {
        return data.count();
        }

protected:

    T itemAt( int i ) const
        {
        return data[ zeroBase(i) ];
        }

    int find( const T t ) const
        {
        return boundBase(data.find( t ));
        }

    void reallocate( sizeType sz, sizeType offset = 0 )
        {
        data.resize( sz, offset );
        }


    void setData( int loc, T t )
        {
        PRECONDITION( loc >= lowerbound && loc <= upperBound() );
        data[ zeroBase(loc) ] = t;
        }

    void insertEntry( int loc )
        {
        PRECONDITION( loc >= lowerbound && loc <= upperBound() );
        T t;
        data.addAt( t, zeroBase(loc) );
        }

    void removeEntry( int loc )
        {
        squeezeEntry( zeroBase(loc) );
        }

    void squeezeEntry( unsigned loc )
        {
        PRECONDITION( loc < data.count() );
        data.detach( loc );
        }

    unsigned zeroBase( int loc ) const
        {
        return loc - lowerbound;
        }

    int boundBase( unsigned loc ) const
        {
        return loc == UINT_MAX ? INT_MAX : loc + lowerbound;
        }

    void grow( int loc )
        {
        if( loc < lowerBound() )
            reallocate( arraySize() + (loc - lowerbound) );
        else if( loc >= boundBase(data.limit()) )
            reallocate( zeroBase(loc) );
        }

    int lowerbound;

    Vect data;

};

/*------------------------------------------------------------------------*/
/*                                                                        */
/*  template <class T> class BI_ArrayAsVector                             */
/*                                                                        */
/*  Implements an array of objects of type T, using a vector as           */
/*  the underlying implementation.                                        */
/*                                                                        */
/*------------------------------------------------------------------------*/

template <class T> class _CLASSTYPE BI_ArrayAsVector :
    public BI_ArrayAsVectorImp<BI_CVectorImp<T>,T>
{

public:

    friend class _CLASSTYPE BI_ArrayAsVectorIterator<T>;

    BI_ArrayAsVector( int upper, int lower = 0, int delta = 0 ) :
        BI_ArrayAsVectorImp<BI_CVectorImp<T>,T>( upper, lower, delta )
        {
        }

    T& operator []( int loc )
        {
        grow( loc );
        return data[zeroBase(loc)];
        }

    T& operator []( int loc ) const
        {
        PRECONDITION( loc >= lowerbound && loc < data.count() );
        return data[zeroBase(loc)];
        }

    void forEach( void (_FAR *f)(T _FAR &, void _FAR *), void _FAR *args )
        {
        if( !isEmpty() )
            data.forEach( f, args );
        }

    T _FAR *firstThat( int (_FAR *f)(const T _FAR &, void _FAR *),
                       void _FAR *args
                     ) const
        {
        if( isEmpty() )
            return 0;
        return data.firstThat( f, args );
        }

    T _FAR *lastThat( int (_FAR * f)(const T _FAR &, void _FAR *),
                      void _FAR *args
                    ) const
        {
        if( isEmpty() )
            return 0;
        return data.lastThat( f, args );
        }

};

template <class T> class _CLASSTYPE BI_ArrayAsVectorIterator :
    BI_VectorIteratorImp<T>
{

public:

    BI_ArrayAsVectorIterator( const BI_ArrayAsVector<T> _FAR & a ) :
        BI_VectorIteratorImp<T>(a.data) {}

};

/*------------------------------------------------------------------------*/
/*                                                                        */
/*  template <class T> class BI_IArrayAsVector                            */
/*                                                                        */
/*  Implements an indirect array of objects of type T, using a vector as  */
/*  the underlying implementation.                                        */
/*                                                                        */
/*------------------------------------------------------------------------*/

template <class T> class _CLASSTYPE BI_IArrayAsVector :
    public BI_ArrayAsVectorImp<BI_ICVectorImp<T>,T _FAR *>,
    public virtual TShouldDelete
{

public:

    friend class _CLASSTYPE BI_IArrayAsVectorIterator<T>;

    BI_IArrayAsVector( int upper, int lower = 0, int delta = 0 ) :
        BI_ArrayAsVectorImp<BI_ICVectorImp<T>,T _FAR *>( upper, lower, delta )
        {
        }

    ~BI_IArrayAsVector()
        {
        flush();
        }

    T _FAR * _FAR & operator []( int loc )
        {
        grow( loc+1 );
        return data[zeroBase(loc)];
        }

    T _FAR * _FAR & operator []( int loc ) const
        {
        PRECONDITION( loc >= lowerbound && zeroBase(loc) < data.limit() );
        return data[zeroBase(loc)];
        }

    void add( T _FAR *t )
        {
        BI_ArrayAsVectorImp<BI_ICVectorImp<T>,T _FAR *>::add(t);
        }

    void addAt( T _FAR *t, int loc )
        {
        BI_ArrayAsVectorImp<BI_ICVectorImp<T>,T _FAR *>::addAt(t,loc);
        }

    void detach( int loc, DeleteType dt = NoDelete )
        {
        data.detach( zeroBase(loc), delObj(dt) );
        }

    void detach( T _FAR *t, DeleteType dt = NoDelete )
        {
        unsigned loc = data.find( t );
        if( loc == UINT_MAX )
            return;
        data.detach( loc, delObj(dt) );
        }

    void flush( DeleteType dt = DefDelete )
        {
        data.flush( delObj(dt), data.limit(), 0 );
        }

    int find( const T *t ) const
        {
        return boundBase(data.find( (T *)t ));
        }

    void forEach( void (_FAR *f)(T _FAR &, void _FAR *), void _FAR *args )
        {
        if( !isEmpty() )
            data.forEach( f, args );
        }

    T _FAR *firstThat( int (_FAR *f)(const T _FAR &, void _FAR *),
                       void _FAR *args
                     ) const
        {
        if( isEmpty() )
            return 0;
        return data.firstThat( f, args );
        }

    T _FAR *lastThat( int (_FAR * f)(const T _FAR &, void _FAR *),
                      void _FAR *args
                    ) const
        {
        if( isEmpty() )
            return 0;
        return data.lastThat( f, args );
        }

};

template <class T> class _CLASSTYPE BI_IArrayAsVectorIterator :
    public BI_IVectorIteratorImp<T>
{

public:

    BI_IArrayAsVectorIterator( const BI_IArrayAsVector<T> _FAR &a ) :
        BI_IVectorIteratorImp<T>(a.data) {}

};

/*------------------------------------------------------------------------*/
/*                                                                        */
/*  class BI_OArrayAsVector                                               */
/*                                                                        */
/*  Implements an array of pointers to Object,                            */
/*  using a vector as the underlying implementation.                      */
/*                                                                        */
/*------------------------------------------------------------------------*/

class _CLASSTYPE BI_OArrayAsVector
{

public:

    friend class _CLASSTYPE BI_OArrayAsVectorIterator;

    BI_OArrayAsVector() : oarray( DEFAULT_ARRAY_SIZE )
        {
        }

    BI_OArrayAsVector( int upr, int lwr = 0, unsigned delta = 0 ) :
        oarray( upr, lwr, delta )
        {
        }

    Object *operator [] (int loc)
        {
        return oarray[loc];
        }

    Object *operator [] (int loc) const
        {
        return oarray[loc];
        }

    int lowerBound() const
        {
        return oarray.lowerBound();
        }

    int upperBound() const
        {
        return oarray.upperBound();
        }

    sizeType arraySize() const
        {
        return oarray.arraySize();
        }

    void add( Object _FAR *o )
        {
        oarray.add(o);
        }

    void addAt( Object _FAR *o, int loc )
        {
        oarray.addAt(o,loc);
        }

    void detach( int loc,
                 TShouldDelete::DeleteType dt = TShouldDelete::NoDelete
               )
        {
        oarray.detach( loc, dt );
        }

    void detach( Object _FAR *o,
                 TShouldDelete::DeleteType dt = TShouldDelete::NoDelete
               )
        {
        oarray.detach( o, dt );
        }

    void destroy( int i )
        {
        oarray.destroy( i );
        }

    void flush( TShouldDelete::DeleteType dt = TShouldDelete::DefDelete )
        {
        oarray.flush( dt );
        }

    int hasMember( Object _FAR *o ) const
        {
        return oarray.hasMember(o);
        }

    Object _FAR *findMember( Object _FAR *o ) const
        {
        int loc = oarray.find(o);
        return loc != INT_MAX ? oarray[loc] : 0;
        }

    int isEmpty() const
        {
        return oarray.isEmpty();
        }

    int isFull() const
        {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜精品福利在线| 视频一区视频二区中文| www国产亚洲精品久久麻豆| 91精品福利在线一区二区三区| 91国产免费看| 欧美日韩综合一区| 欧美三电影在线| 91精品国产91久久久久久最新毛片| 欧美裸体一区二区三区| 91麻豆精品91久久久久同性| 91精品在线免费观看| 日韩视频中午一区| 精品国产乱码久久久久久免费| 亚洲精品一区二区精华| 欧美国产国产综合| 亚洲老妇xxxxxx| 日韩高清欧美激情| 激情久久五月天| 久久爱www久久做| 99精品一区二区三区| 日本高清不卡在线观看| 欧美一级视频精品观看| 国产精品久久毛片av大全日韩| 亚洲欧洲国产日韩| 亚洲成av人片在线| 国产精品一区二区在线看| av亚洲精华国产精华精华 | 国产精品丝袜久久久久久app| 国产精品美女久久久久久久久| 亚洲色图.com| 男男视频亚洲欧美| 99精品久久免费看蜜臀剧情介绍 | 午夜精品福利视频网站| 国产精品一区二区久久精品爱涩| 99re热这里只有精品视频| 欧美日韩一区在线观看| 国产网站一区二区三区| 亚洲成人福利片| 国产99久久久精品| 欧美二区三区的天堂| 国产精品国模大尺度视频| 日本成人在线不卡视频| 99国产精品久久久久久久久久久| 日韩欧美高清在线| 一区二区三区在线免费视频| 国产精品夜夜爽| 91精品国产综合久久福利软件 | 亚洲尤物在线视频观看| 国产精品一区二区在线观看不卡| 在线看不卡av| 国产精品天天看| 久久99久久久欧美国产| 欧美日韩国产综合久久| 国产精品久久久一区麻豆最新章节| 爽好久久久欧美精品| 91麻豆产精品久久久久久| 久久一区二区视频| 欧美aaa在线| 777久久久精品| 亚洲国产一区二区在线播放| 波多野结衣在线aⅴ中文字幕不卡| 日韩你懂的电影在线观看| 日韩国产高清在线| 欧美精品日日鲁夜夜添| 亚洲一区二区成人在线观看| 99精品视频一区| 国产精品久久久久久久久图文区| 日本人妖一区二区| 欧美一级欧美三级在线观看| 亚洲www啪成人一区二区麻豆| 色香蕉久久蜜桃| 综合在线观看色| 99久久精品免费观看| 国产精品丝袜黑色高跟| 成人国产免费视频| 亚洲国产精品传媒在线观看| 国产高清久久久久| 国产精品无人区| 91在线高清观看| 一区二区三区日韩| 欧美日韩在线精品一区二区三区激情| 亚洲人妖av一区二区| 色婷婷精品大在线视频| 亚洲一区在线视频观看| 欧美三级电影网| 美腿丝袜亚洲色图| 精品国产露脸精彩对白| 国产宾馆实践打屁股91| 国产精品卡一卡二卡三| 91精品91久久久中77777| 午夜精品福利一区二区三区av | 欧美人伦禁忌dvd放荡欲情| 免费在线视频一区| 久久毛片高清国产| 成人18视频日本| 亚洲图片欧美视频| xfplay精品久久| 99国产欧美另类久久久精品| 亚洲精品乱码久久久久久日本蜜臀| 色久优优欧美色久优优| 日韩主播视频在线| 久久久久国产免费免费| 一本一道波多野结衣一区二区| 亚洲国产va精品久久久不卡综合| 日韩三级av在线播放| 成人av电影观看| 图片区日韩欧美亚洲| 精品国产一区二区三区av性色| 成人性生交大片免费看中文网站| 一区二区三区在线视频免费| 精品久久久久久无| 93久久精品日日躁夜夜躁欧美| 青青草一区二区三区| 国产精品色哟哟| 日韩写真欧美这视频| 91影院在线观看| 久久99精品久久久久久久久久久久 | 久久蜜桃香蕉精品一区二区三区| 色国产精品一区在线观看| 精品在线免费观看| 亚洲精品中文在线观看| 久久青草欧美一区二区三区| 欧美色图第一页| 菠萝蜜视频在线观看一区| 日韩国产在线一| 亚洲精品成人精品456| 久久蜜桃一区二区| 日韩亚洲电影在线| 欧美三区在线视频| youjizz国产精品| 国产一区二区在线观看视频| 亚洲成人一区二区在线观看| 国产精品色在线| 久久亚洲精品国产精品紫薇| 91精品国产欧美一区二区| 91精品1区2区| 91成人在线观看喷潮| 97精品久久久久中文字幕| 国产成人日日夜夜| 国产精品91一区二区| 九九久久精品视频| 日欧美一区二区| 亚洲超碰97人人做人人爱| 一区二区三区.www| 亚洲激情校园春色| 亚洲欧美日韩一区二区三区在线观看| 国产精品网站在线播放| 中文在线一区二区| 日本一区二区综合亚洲| 久久久久国产精品麻豆| 欧美精品一区二区三区视频| 欧美成人一级视频| 日韩免费福利电影在线观看| 日韩亚洲国产中文字幕欧美| 日韩欧美专区在线| 欧美大白屁股肥臀xxxxxx| 日韩欧美一区二区不卡| 精品黑人一区二区三区久久| 久久五月婷婷丁香社区| 国产精品免费aⅴ片在线观看| 国产午夜精品理论片a级大结局 | 中文字幕一区在线观看| 综合久久一区二区三区| 亚洲黄色片在线观看| 亚洲成人综合网站| 日本aⅴ亚洲精品中文乱码| 麻豆视频观看网址久久| 国产精品一线二线三线精华| 丰满岳乱妇一区二区三区| av在线不卡网| 欧美性色欧美a在线播放| 91精品啪在线观看国产60岁| 久久综合中文字幕| 国产精品网站在线观看| 亚洲电影欧美电影有声小说| 免费成人深夜小野草| 高清成人免费视频| 在线日韩国产精品| 精品国产91久久久久久久妲己| 国产精品欧美精品| 亚洲国产美国国产综合一区二区| 久久成人精品无人区| 成人午夜视频在线| 正在播放一区二区| 欧美激情在线看| 亚洲成a人v欧美综合天堂下载| 国产美女久久久久| 欧美午夜精品一区二区三区| 精品国一区二区三区| 亚洲韩国一区二区三区| 国产乱国产乱300精品| 欧美天堂亚洲电影院在线播放| 久久一日本道色综合| 亚洲成人第一页| 风间由美一区二区三区在线观看 | 99精品一区二区三区| 日韩午夜在线观看视频| 亚洲免费观看高清完整版在线观看熊| 久久 天天综合| 欧美色图一区二区三区|