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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? deques.h

?? hello everybody. good lucky to you
?? H
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
/*------------------------------------------------------------------------*/
/*                                                                        */
/*  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 );
        }

};

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品亚洲成av人在线观看| 国产成人亚洲综合色影视| 精品盗摄一区二区三区| 97超碰欧美中文字幕| 久草这里只有精品视频| 亚洲国产一区在线观看| 国产精品久久久久婷婷二区次| 欧美日韩高清在线| 不卡视频免费播放| 精品一区二区三区蜜桃| 亚洲二区视频在线| 亚洲精品中文在线观看| 欧美激情一二三区| 精品久久国产97色综合| 91黄色免费版| 不卡一区二区在线| 国产高清在线观看免费不卡| 日本在线播放一区二区三区| 亚洲一区欧美一区| 伊人夜夜躁av伊人久久| 国产精品色婷婷久久58| 久久综合九色综合欧美98 | 青青青爽久久午夜综合久久午夜| 国产精品久久777777| 国产人伦精品一区二区| 久久综合成人精品亚洲另类欧美| 5858s免费视频成人| 欧美日韩精品专区| 欧美无人高清视频在线观看| 一本色道综合亚洲| 不卡电影一区二区三区| jlzzjlzz亚洲日本少妇| 高清国产午夜精品久久久久久| 国内成人自拍视频| 国产精品资源站在线| 国产在线看一区| 麻豆91在线播放免费| 麻豆国产精品视频| 麻豆中文一区二区| 麻豆91免费看| 久久精品二区亚洲w码| 日韩av电影免费观看高清完整版 | 欧美色图激情小说| 91免费视频观看| www.欧美日韩| www.在线欧美| 91丨九色丨黑人外教| 一本一道波多野结衣一区二区| 色噜噜狠狠成人网p站| 色婷婷久久久亚洲一区二区三区| 在线一区二区三区四区五区 | 性久久久久久久| 亚洲国产精品久久久男人的天堂| 亚洲自拍偷拍图区| 视频精品一区二区| 精品夜夜嗨av一区二区三区| 国产一区二区美女诱惑| 国产高清亚洲一区| 99精品桃花视频在线观看| 在线精品观看国产| 欧美一区二区视频在线观看2022| 日韩欧美国产综合| 久久女同互慰一区二区三区| 国产精品久久久久久久久动漫| 亚洲视频一区二区在线观看| 亚洲成人综合网站| 精品中文字幕一区二区| 粉嫩绯色av一区二区在线观看| 91色乱码一区二区三区| 欧美精品一二三| 精品国产一区二区亚洲人成毛片| 欧美韩国日本一区| 亚洲影视在线观看| 久久99精品久久久久久动态图| 丁香网亚洲国际| 精品婷婷伊人一区三区三| 精品成a人在线观看| 日韩一区日韩二区| 免费高清在线视频一区·| 成人av资源在线观看| 欧美三级电影一区| 欧美国产日韩a欧美在线观看| 亚洲国产日韩一级| 国产高清在线观看免费不卡| 欧美日韩一卡二卡三卡 | 成人激情动漫在线观看| 欧美日韩在线播放三区| 久久久综合网站| 亚洲一区二区视频在线观看| 精品一区二区三区日韩| 色噜噜狠狠色综合欧洲selulu| 日韩欧美一级在线播放| 日韩毛片一二三区| 久久99热这里只有精品| 色狠狠色狠狠综合| 欧美国产日韩亚洲一区| 麻豆91精品视频| 欧美日韩一区二区三区免费看| 国产精品卡一卡二卡三| 久久国产精品72免费观看| 91黄色小视频| 蜜桃视频第一区免费观看| 色综合久久中文字幕| 久久久噜噜噜久久中文字幕色伊伊| 一区二区久久久| 成人精品鲁一区一区二区| 欧美一级高清大全免费观看| 亚洲精品视频一区二区| av一本久道久久综合久久鬼色| 欧美一级夜夜爽| 亚洲成人av一区| 色综合久久综合| 国产精品福利电影一区二区三区四区| 激情深爱一区二区| 日韩天堂在线观看| 性欧美疯狂xxxxbbbb| 色欧美片视频在线观看在线视频| 欧美国产欧美综合| 国产在线视频一区二区| 精品久久久久久综合日本欧美| 免费成人在线网站| 欧美一区二区三区视频在线| 亚洲成人激情av| 欧美日韩一级大片网址| 亚洲午夜精品网| 欧美亚洲愉拍一区二区| 亚洲一区二区三区小说| 色狠狠av一区二区三区| 一区二区免费视频| 欧美在线免费观看亚洲| 亚洲一区二区视频在线| 欧美色手机在线观看| 一区二区三区**美女毛片| 欧洲另类一二三四区| 亚洲一区二区三区在线看| 欧洲av在线精品| 亚洲成年人影院| 欧美老年两性高潮| 青青草国产成人av片免费| 91精品国产色综合久久不卡蜜臀| 日日夜夜免费精品| 欧美一区二区三区思思人| 久久精品二区亚洲w码| 久久久久久久久久久久久久久99 | 欧美一二三四在线| 舔着乳尖日韩一区| 日韩一级片在线播放| 久久99国产精品免费| 久久精品夜色噜噜亚洲a∨| 成人午夜电影网站| 亚洲乱码国产乱码精品精可以看| 欧美在线视频日韩| 日日夜夜一区二区| 久久青草国产手机看片福利盒子 | 国产精品美女久久福利网站| 99在线精品免费| 亚洲福中文字幕伊人影院| 3d成人h动漫网站入口| 久久精品99国产精品日本| 久久一区二区视频| 色综合中文综合网| 日韩 欧美一区二区三区| 欧美成人三级在线| 国产不卡高清在线观看视频| 国产精品久久毛片a| 欧美日韩极品在线观看一区| 色婷婷精品久久二区二区蜜臀av| 偷窥国产亚洲免费视频| 久久久久久一二三区| 一本一道波多野结衣一区二区| 日本午夜精品一区二区三区电影| 欧美精品一区二区三区视频| 99国产精品国产精品久久| 五月天国产精品| 国产欧美精品一区二区色综合| 在线观看国产日韩| 国产一区二区不卡老阿姨| 自拍偷拍国产精品| 精品区一区二区| 色综合欧美在线| 国产麻豆精品在线| 亚洲综合一二三区| 国产三级欧美三级| 欧美日韩亚洲综合一区二区三区| 国产福利一区二区三区视频| 午夜日韩在线观看| 欧美国产精品中文字幕| 欧美一区二区三区在线观看视频 | 午夜精品福利一区二区三区蜜桃| 精品女同一区二区| 在线免费观看一区| 国产成人综合在线播放| 无码av免费一区二区三区试看| 国产色一区二区| 日韩一区二区在线看片| 91在线免费看| 国产精品一二三四| 免费观看成人鲁鲁鲁鲁鲁视频| 亚洲欧美偷拍另类a∨色屁股| 精品盗摄一区二区三区|