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

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

?? deques.h

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

#if !defined( __DEQUES_H )
#define __DEQUES_H

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

#if !defined( __CHECKS_H )
#include <Checks.h>
#endif  // __CHECKS_H

#if !defined( __SHDDEL_H )
#include <ShdDel.h>
#endif  // __SHDDEL_H

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

#if !defined( __DLISTIMP_H )
#include <DListImp.h>
#endif  // __DLISTIMP_H

#if !defined( __CONTAIN_H )
#include <Contain.h>
#endif  // __CONTAIN_H

/*------------------------------------------------------------------------*/
/*                                                                        */
/*  template <class Vect, class T> class BI_DequeAsVectorImp              */
/*                                                                        */
/*  Implements the fundamental dequeue operations, using a vector         */
/*  as the underlying implementation.  The type Vect specifies the        */
/*  form of the vector, either a BI_VectorImp<T0> or a                    */
/*  BI_IVectorImp<T0>.  The type T specifies the type of the              */
/*  objects to be put in the dequeue.  When using BI_VectorImp<T0>,       */
/*  T should be the same as T0. When using BI_IVectorImp<T0>, T           */
/*  should be of type pointer to T0.  See BI_QueueAsVector and            */
/*  BI_IQueueAsVector for examples.                                       */
/*                                                                        */
/*------------------------------------------------------------------------*/

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

public:

    BI_DequeAsVectorImp( unsigned max = DEFAULT_DEQUE_SIZE ) :
        data(max+1),
        left(0),
        right(0)
        {
        }

    T peekLeft() const
        {
        PRECONDITION( !isEmpty() );
        return data[left];
        }

    T peekRight() const
        {
        PRECONDITION( !isEmpty() );
        return data[prev(right)];
        }

    T getLeft();
    T getRight();

    void putLeft( T );
    void putRight( T );

    void flush( TShouldDelete::DeleteType = TShouldDelete::DefDelete )
        {
        left = right = 0;
        }

    int isFull() const
        {
        return right == prev( left );
        }

    int isEmpty() const
        {
        return right == left;
        }

    int getItemsInContainer() const
        {
        return (right>=left) ? right - left : data.limit()-(left-right);
        }

protected:

    Vect data;
    unsigned left;
    unsigned right;

    unsigned prev( unsigned index ) const
        {
        if( index == 0 )
            index = data.limit();
        return --index;
        }

    unsigned next( unsigned index ) const
        {
        index++;
        if( index == data.limit() )
            index = 0;
        return index;
        }

};

template <class Vect, class T> T BI_DequeAsVectorImp<Vect,T>::getRight()
{
    PRECONDITION( !isEmpty() );
    right = prev(right);
    return data[right];
}

template <class Vect, class T>
void BI_DequeAsVectorImp<Vect,T>::putRight( T t )
{
    PRECONDITION( !isFull() );
    data[right] = t;
    right = next(right);
}

template <class Vect, class T> T BI_DequeAsVectorImp<Vect,T>::getLeft()
{
    PRECONDITION( !isEmpty() );
    T t = data[left];
    left = next(left);
    return t;
}

template <class Vect, class T>
void BI_DequeAsVectorImp<Vect,T>::putLeft( T t )
{
    PRECONDITION( !isFull() );
    left = prev(left);
    data[left] = t;
}

/*------------------------------------------------------------------------*/
/*                                                                        */
/*  template <class T> class BI_DequeAsVectorIteratorImp                  */
/*                                                                        */
/*  Implements an iterator for the family of Deques as Vectors.           */
/*                                                                        */
/*------------------------------------------------------------------------*/

template <class I, class V, class T>
class _CLASSTYPE BI_DequeAsVectorIteratorImp
{

public:

    BI_DequeAsVectorIteratorImp( const V _FAR &, unsigned l, unsigned r );

    operator int();
    T current();
    T operator ++ ( int );
    T operator ++ ();
    void restart();

private:

    unsigned left;
    unsigned right;
    const V _FAR *vect;
    I iter;
    int second;

    void nextBlock();

};

template <class I, class V, class T>
BI_DequeAsVectorIteratorImp<I,V,T>::BI_DequeAsVectorIteratorImp( const V _FAR &v,
                                                               unsigned l,
                                                               unsigned r
                                                             ) :
    iter( v )
{
    vect = &v;
    left = l;
    right = r;
    restart();
}

template <class I, class V, class T>
BI_DequeAsVectorIteratorImp<I,V,T>::operator int()
{
    return int(iter);
}

template <class I, class V, class T>
T BI_DequeAsVectorIteratorImp<I,V,T>::current()
{
    return iter.current();
}

template <class I, class V, class T>
T BI_DequeAsVectorIteratorImp<I,V,T>::operator ++ ( int )
{
    nextBlock();
    return iter++;
}

template <class I, class V, class T>
T BI_DequeAsVectorIteratorImp<I,V,T>::operator ++ ()
{
    T temp = ++iter;
    nextBlock();
    return temp;
}

template <class I, class V, class T>
void BI_DequeAsVectorIteratorImp<I,V,T>::restart()
{
    if( left <= right )
        iter.restart( left, right );
    else
        iter.restart( 0, left );
    second = 0;
}

template <class I, class V, class T>
void BI_DequeAsVectorIteratorImp<I,V,T>::nextBlock()
{
    if( int(iter) == 0 && !second && left > right )
        {
        iter.restart( right, vect->limit() );
        second = 1;
        }
}

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

template <class T> class _CLASSTYPE BI_DequeAsVector :
    public BI_DequeAsVectorImp<BI_VectorImp<T>,T>
{

public:

    friend class _CLASSTYPE BI_DequeAsVectorIterator<T>;

    BI_DequeAsVector( unsigned max = DEFAULT_DEQUE_SIZE ) :
        BI_DequeAsVectorImp<BI_VectorImp<T>,T>( max )
        {
        }

    void forEach( void (_FAR *f)(T _FAR &, void _FAR *), void _FAR *args )
        {
        data.forEach( f, args, left, right );
        }

    T _FAR *firstThat( int (_FAR *f)(const T _FAR &, void _FAR *),
                       void _FAR *args
                     ) const
        {
        return data.firstThat( f, args, left, right );
        }

    T _FAR *lastThat( int (_FAR *f)(const T _FAR &, void _FAR *),
                      void _FAR *args
                    ) const
        {
        return data.lastThat( f, args, left, right );
        }

};

/*------------------------------------------------------------------------*/
/*                                                                        */
/*  template <class T> class BI_DequeAsVectorIterator                     */
/*                                                                        */
/*  Implements an iterator for a DequeAsVector.                           */
/*                                                                        */
/*------------------------------------------------------------------------*/

template <class T> class _CLASSTYPE BI_DequeAsVectorIterator :
    public BI_DequeAsVectorIteratorImp<BI_VectorIteratorImp<T>,BI_VectorImp<T>,T>
{

public:

    BI_DequeAsVectorIterator( const BI_DequeAsVector<T> _FAR &d ) :
        BI_DequeAsVectorIteratorImp<BI_VectorIteratorImp<T>,BI_VectorImp<T>,T>( d.data,d.left,d.right )
        {
        }

};

/*------------------------------------------------------------------------*/
/*                                                                        */
/*  template <class T> class BI_IDequeAsVector                            */
/*                                                                        */
/*  Implements a dequeue of pointers to objects of type T,                */
/*  using a vector as the underlying implementation.                      */
/*                                                                        */
/*------------------------------------------------------------------------*/

template <class T> class _CLASSTYPE BI_IDequeAsVector :
    public BI_DequeAsVectorImp<BI_IVectorImp<T>,T _FAR *>,
    public virtual TShouldDelete
{

public:

    friend class _CLASSTYPE BI_IDequeAsVectorIterator<T>;

    BI_IDequeAsVector( unsigned sz = DEFAULT_DEQUE_SIZE ) :
        BI_DequeAsVectorImp<BI_IVectorImp<T>,T _FAR *>(sz)
        {
        }

    ~BI_IDequeAsVector()
        {
        flush();
        }

    T _FAR *peekLeft() const
        {
        return (T _FAR *)BI_DequeAsVectorImp<BI_IVectorImp<T>,T _FAR *>::peekLeft();
        }

    T _FAR *peekRight() const
        {
        return (T _FAR *)BI_DequeAsVectorImp<BI_IVectorImp<T>,T _FAR *>::peekRight();
        }

    T _FAR *getLeft()
        {
        return (T _FAR *)BI_DequeAsVectorImp<BI_IVectorImp<T>,T _FAR *>::getLeft();
        }

    T _FAR *getRight()
        {
        return (T _FAR *)BI_DequeAsVectorImp<BI_IVectorImp<T>,T _FAR *>::getRight();
        }

    void putLeft( T _FAR *t )
        {
        BI_DequeAsVectorImp<BI_IVectorImp<T>,T _FAR *>::putLeft( t );
        }

    void putRight( T _FAR *t )
        {
        BI_DequeAsVectorImp<BI_IVectorImp<T>,T _FAR *>::putRight( t );
        }

    void flush( TShouldDelete::DeleteType = TShouldDelete::DefDelete );

    void forEach( void (_FAR *f)(T _FAR &, void _FAR *), void _FAR *args )
        {
        data.forEach( f, args, left, right );
        }

    T _FAR *firstThat( int (_FAR *f)(const T _FAR &, void _FAR *),
                       void _FAR *args
                     ) const
        {
        return data.firstThat( f, args, left, right );
        }

    T _FAR *lastThat( int (_FAR *f)(const T _FAR &, void _FAR *),
                      void _FAR *args
                    ) const
        {
        return data.lastThat( f, args, left, right );
        }

};

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美激情综合网| 亚洲女子a中天字幕| 99久久99久久久精品齐齐| 日本免费新一区视频| 亚洲免费高清视频在线| 久久se精品一区二区| 午夜精品影院在线观看| 一区二区免费在线| 亚洲免费在线电影| 国产精品夜夜嗨| 国产精品一区二区久久不卡 | 丁香激情综合国产| 国产一区二区三区免费观看| 国产馆精品极品| jlzzjlzz亚洲日本少妇| 99国产精品久久久久| 久久在线免费观看| 久久一日本道色综合| 亚洲国产aⅴ天堂久久| 日韩中文欧美在线| 国产精品99久| 久久伊99综合婷婷久久伊| 男女性色大片免费观看一区二区 | 亚洲影视在线播放| 麻豆精品一区二区三区| 国产a区久久久| 91国模大尺度私拍在线视频| 91行情网站电视在线观看高清版| 中文一区在线播放| 成人免费高清在线| 日韩一区欧美小说| 日韩国产精品大片| 欧美一区二区啪啪| 国产欧美精品在线观看| 亚洲一区免费在线观看| 色婷婷精品久久二区二区蜜臂av| 欧美丰满高潮xxxx喷水动漫| 久久只精品国产| 国产综合色精品一区二区三区| 色网综合在线观看| 亚洲九九爱视频| 精品综合久久久久久8888| a在线播放不卡| 亚洲视频一二区| 国产在线日韩欧美| 久久婷婷国产综合国色天香| 国产高清在线精品| 国产精品久久久久久久久图文区 | 337p粉嫩大胆色噜噜噜噜亚洲| 精品一区二区免费视频| 久久久久免费观看| 天天综合天天做天天综合| 欧美一卡二卡在线观看| 韩国女主播成人在线观看| 国产精品嫩草影院com| 免费日本视频一区| 精品国产乱码久久| 亚洲最大的成人av| 91精品国产色综合久久不卡蜜臀| 蜜臀va亚洲va欧美va天堂| 久久精品视频在线免费观看| 久久99国产精品久久| 国产精品久久毛片av大全日韩| 在线观看日韩电影| 亚洲国产精品黑人久久久| 91亚洲大成网污www| 中文一区二区在线观看| 91福利小视频| 国产老女人精品毛片久久| 亚洲日穴在线视频| 日韩免费观看2025年上映的电影| 日韩国产精品91| 国产精品萝li| 欧美tickling网站挠脚心| 六月婷婷色综合| 亚洲嫩草精品久久| 精品免费国产二区三区| 91猫先生在线| 激情文学综合插| 性做久久久久久免费观看欧美| 色噜噜狠狠色综合中国| 激情av综合网| 亚洲一区二区三区三| 国产日韩精品一区二区三区在线| 在线成人小视频| 91免费在线看| 国产精品一区二区三区网站| 天堂久久久久va久久久久| 日本一区二区三区在线不卡| 91精品久久久久久蜜臀| 久久99国产精品久久99果冻传媒| 亚洲欧美日韩国产综合在线| 精品国产精品网麻豆系列| 欧美三区免费完整视频在线观看| 免费看精品久久片| 亚洲欧美另类小说| 国产欧美一区二区精品性| 日韩精品一区二区在线| 欧美三级日韩三级国产三级| 色综合久久66| 91麻豆免费视频| 不卡视频一二三四| 亚洲成年人网站在线观看| 成人欧美一区二区三区黑人麻豆| 久久久久久久久久久久久久久99 | 成人一级黄色片| 激情六月婷婷久久| 麻豆精品国产传媒mv男同 | 成人午夜电影久久影院| 麻豆成人免费电影| 日韩在线a电影| 日本中文字幕一区二区视频| 偷偷要91色婷婷| 亚洲国产一区二区三区| 亚洲欧美日韩久久| 一区二区日韩av| 一区二区三区在线高清| 亚洲另类一区二区| 性欧美疯狂xxxxbbbb| 亚洲丰满少妇videoshd| 亚洲小说春色综合另类电影| 亚洲乱码国产乱码精品精小说| 中文字幕亚洲区| 亚洲精品国产一区二区精华液| 亚洲视频 欧洲视频| 亚洲精品国产a| 亚洲午夜激情网页| 日本特黄久久久高潮| 亚洲成av人片在www色猫咪| 亚洲成av人片在线观看无码| 奇米在线7777在线精品| 国产精品亚洲一区二区三区在线| 精品一区二区三区日韩| 波多野结衣精品在线| 日本福利一区二区| 欧美日本在线播放| 国产成人综合精品三级| 99综合电影在线视频| 欧美影视一区在线| 99久久精品一区二区| 欧美午夜精品一区| 26uuu国产在线精品一区二区| 欧美—级在线免费片| 亚洲一级电影视频| 久久精品国产999大香线蕉| 国产成人av网站| 色呦呦国产精品| 欧美成人r级一区二区三区| 国产欧美日韩精品一区| 亚洲在线视频一区| 国产综合色视频| 欧美性猛交xxxxxxxx| 国产亚洲污的网站| 亚洲国产欧美在线| 九九九精品视频| 欧美亚洲国产一区二区三区| 日韩免费在线观看| 一区二区三区四区在线免费观看| 日本亚洲免费观看| av网站一区二区三区| 日韩三区在线观看| 欧美大黄免费观看| 亚洲欧洲在线观看av| 精品一二三四区| 欧美无乱码久久久免费午夜一区 | 亚欧色一区w666天堂| 成人国产视频在线观看| 日韩欧美国产一区二区在线播放| 亚洲免费av在线| 国产美女视频91| 欧美美女黄视频| 中文字幕视频一区| 精品一区二区三区免费毛片爱| 欧美视频在线一区二区三区 | 成人欧美一区二区三区黑人麻豆| 久久99精品一区二区三区三区| 日本精品裸体写真集在线观看| 国产亚洲欧洲997久久综合| 青青国产91久久久久久| 欧美视频一区二区在线观看| 国产精品久久久久久久久久免费看| 精品一区二区在线视频| 4438x亚洲最大成人网| 亚洲国产乱码最新视频| 91久久精品午夜一区二区| 国产精品国产自产拍高清av| 精品亚洲欧美一区| 精品国产1区二区| 蜜桃传媒麻豆第一区在线观看| 欧美日韩视频第一区| 亚洲一区在线看| 一本一道波多野结衣一区二区| 国产亚洲自拍一区| 成人免费视频视频| 久久婷婷一区二区三区| 国产一区二三区| 久久美女艺术照精彩视频福利播放 | 久久国产成人午夜av影院| 欧美一级午夜免费电影| 视频一区二区欧美|