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

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

?? sarray.h

?? 任意給定三維空間的點集
?? H
?? 第 1 頁 / 共 2 頁
字號:
/*-------------------------------------------------------------------- * cutting - compute palanr cuttings * Copyright (C) 1998 Sariel Har-Peled * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. *  * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. *  * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, * MA  02111-1307, USA.\*--------------------------------------------------------------------*//*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* * sarray.h - *    Small/static templated array.\*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/#ifndef  __SARRAY__H#define  __SARRAY__H#define  DASSERT( X, Y)   {if  ( !(X) ) { fprintf( stderr, Y ); assert(X); }}/*---------------------------------------------------------------------- * a function we need to implement a search.\*----------------------------------------------------------------------*/int        searchArrayEntry( const void  * ptr, int  size, int num,                                    const void  * var );int        searchTableEntry( const void  * ptr,                                    int           localOffset,                                    int           localSize,                                    int           size,                                    int           numEnt,                                    const void  * var );int        calcEntriesNum( void    * ptr, int      size );template<class T>void  * operator  new( size_t x, T  * ptr ) {    //printf( "my new called!: %d\n", x );     (void)x;    return  (void *)ptr;}#define  SARRAY_NO_RANGE_CHECKtypedef  void    ( *ptrDestructFunc)( void  * ptr );typedef  void    ( *ptrCopyConstructFunc)( void  * ptr, void  * src );class  GenericArray{protected:    bool        fInitialized;    int         sizeEntry;    int         maxSize;    int         currSize;    void      * ptrArr;    int  id;    ptrDestructFunc  ptrDestructor;    ptrCopyConstructFunc  ptrCopyConstructor;    void   dump()     {        fflush( stdout );        fflush( stderr );        printf( "sarray dump\n" );        printf( "   fInitialized: %d\n", fInitialized );        printf( "   maxSize: %d\n", maxSize );        printf( "   currSize: %d\n", currSize );        printf( "   pArr: %p\n", (void *)ptrArr );        printf( "   id: %d\n", id );    }    int   hash_gen( int  size_entry ) const    {        int  ind, val, jnd;        const char  * ptr;        val = 0;        for  ( ind = 0; ind < getEntriesNum(); ind++ ) {            ptr = (((char *)ptrArr) + ind * size_entry);            for  ( jnd = size_entry-1; jnd >= 0; jnd-- ) {                val = ((val ^ *ptr) << 3) + *ptr + val;                ptr++;            }        }        return  val;    }    void   term_Range( int  size )     {        (void)size;                int  ind;        char  * ptr;        //printf( "term_Range - terminating range( %d )!\n", size );        ptr = (char *)ptrArr;        for  ( ind = 0; ind < size; ind++ ) {            //intf( "ptrDestructor: %p\n", (void *)ptrDestructor );            (*ptrDestructor)( ptr );            ptr += sizeEntry;        }           }public:    GenericArray( ptrDestructFunc  _ptrDestructor,                  ptrCopyConstructFunc  _ptrConstructor )    {        ptrDestructor = _ptrDestructor;        ptrCopyConstructor = _ptrConstructor;    }    void  init_funcs( ptrDestructFunc  _ptrDestructor,                      ptrCopyConstructFunc  _ptrConstructor )    {        ptrDestructor = _ptrDestructor;        ptrCopyConstructor = _ptrConstructor;    }    void  truncate( int      pos )    {        assert( pos >= 0 );        if  ( currSize >= pos  &&   pos >= 0 )            currSize = pos;    }    bool  isFull( void ) const    {        return   currSize >= maxSize;    }    bool  isEmpty( void ) const    {        return   currSize <= 0;    }    void  initToEmpty( void )    {        fInitialized = false;    }    int        getEntriesNum( void ) const    {        return    currSize;    }    int        size( void ) const    {        return    currSize;    }    void       reset( void )    {        term_Range( currSize );        currSize = 0;    }};template<class T>class  Array : public GenericArray {private:    T         * pArr; public:    typedef  int        ( * ptrCompFunc )( const T     & a, const T    & b );    typedef  int        ( * ptrCompFuncExt )( void  * data, const T     & a,                                              const T    & b );    static  void    destruct( void  * ptr )     {        //intf( "destructing: %p\n", (void *)ptr );        ((T *)ptr)->~T();    }    static  void    copyConstruct( void  * ptr, void  * src )     {        ::new( (T *)ptr )  T( *(T *)src );    }                                                               private:    int               partitionExt( ptrCompFuncExt  pCompFunc,                                    void  * data, long  left,                                     long  right );   int               partition( ptrCompFunc  p_comp,                                long  left, long  right );   void             internalQSortExt( ptrCompFuncExt  pCompFunc,                                      void  * data, int  left,                                      int  right );   void             internalQSort( ptrCompFunc   pCompFunc,                                   int  left, int  right );    /*   void   termRange( int  size )     {        int  ind;        for  ( ind = 0; ind < size; ind++ )            (pArr + ind)->~T();        //delete( pArr )  (pArr + ind);    }*/public:    Array( void ) : GenericArray( destruct, copyConstruct )    {        sizeEntry = ((char *)(pArr + 1) - (char *)pArr);        fInitialized = false;    }    void             quickSort( ptrCompFunc  pFunc );    int              binarySearch( const T    & elem, ptrCompFunc  pCompFunc );    int              binarySearchExt( const T    & elem, ptrCompFunc  pCompFunc,                                      int  left, int  right );    void             quickSortExt( ptrCompFuncExt  pCompFuncExt,                                             void  * data );    void             quickSortReverse( ptrCompFunc  pCompFunc );    void             substractSet( Array     & set, ptrCompFunc  pCompFunc );    void             substractSortedSet( Array      & set, ptrCompFunc  pCompFunc );#ifdef  NO_THANKS    void  permut()    {        int  newPos, ind;        for   ( ind = 0; ind < currSize; ind++ ) {            real  k;            realRand(k);            newPos = (to_int(k * (3 * currSize))) % currSize;            assert( 0 <= newPos  &&  newPos < currSize );            exchange( pArr[ ind ], pArr[ newPos ] );                    }    }#endif  // NO_THANKS    int   hash( void ) const    {        return  hash_gen( sizeof( T ) );    }            void  reverse( void )    {        int                ind;        T                  tmp;/*        printf( "reversing\n" );*/        for  ( ind = (currSize / 2) - 1; ind >= 0; ind-- ) {             tmp = (*this)[ ind ];            (*this)[ ind ] = (*this)[ currSize - ind - 1 ];            (*this)[ currSize - ind - 1 ] = tmp;        }    }    void  init( int   entriesNum, int  _id )    {        init_funcs( destruct, copyConstruct );        sizeEntry = ( ((char *)(pArr + 1)) - (char *)pArr);        id = _id;        maxSize = entriesNum;        currSize = 0;        //pArr = new T[ max( sizeof( T ) * entriesNum, 256U ) ];        //printf( "Malloc size: %d\n", (int)max( sizeof( T ) * entriesNum, 256U ) );        pArr = (T *)malloc( max( sizeof( T ) * (2+ entriesNum), 256U ) );        //printf( "%p malloc: %d\n", pArr, id );        if  ( pArr == NULL ) {          /*  DEBUG_SystemPanic( __POS__, "Fail to allocate array" ); */            return;        }        ptrArr = pArr;        fInitialized = true;    }    bool    resize( int        entriesNum )    {        int         size, ind;        T         * pNewArr;                ///printf( "resize - [%d]!\n", id );        DASSERT( ( ((char *)&(pArr[ 1 ])) - ((char *)&(pArr[ 0 ])) )                  == sizeEntry, "Size failure - not initialized?" );	size = max( sizeof( T ) * (2 + entriesNum), 256U );        pNewArr = (T *)malloc( size );        if  ( pNewArr == NULL )             return  false;	memset( pNewArr, 0, size );        //printf( "\tcurrSize: %d\n", currSize );        for  ( ind = 0; ind < currSize; ind++ )            ::new( pNewArr + ind )  T( pArr[ ind ] );        //printf( "do termRange\n" );        term_Range( currSize );        free( (void *) pArr );	pArr = pNewArr;        ptrArr = pArr;	maxSize = entriesNum;		return  true;    }        bool       grow( int          size )     {        if  ( size <= maxSize )            return  true;                return  resize( 256 + size * 4 );    }    const T  & top() const {        assert( currSize > 0 );        return  pArr[ currSize - 1 ];    }    const T &operator[]( int i )  const    {#ifndef SARRAY_NO_RANGE_CHECK        DASSERT( 0 <= i  &&  i < currSize  &&  fInitialized, "range failure" );#endif        return( pArr[ i ] );    }    const T &getCellDirect( int i )  const    {        return( pArr[ i ] );    }    ~Array( void )    {        term();    }    T &operator[]( int i )    {#ifndef  SARRAY_NO_RANGE_CHECK        DASSERT( 0 <= i  &&  i < currSize  &&  fInitialized, "range failure" );#endif         return( pArr[ i ] );    }            void       deleteEntry( const T   & var )    {        int                 ind;                ind = searchEntry( var );        if  ( ind >= 0 ) {            pArr[ ind ] = pArr[ currSize - 1 ];            currSize--;        }    }    void       deleteEntryByPos( int       ind )    {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美一级片| 6080午夜不卡| 国产精品一区二区在线看| 日韩电影在线免费观看| 亚洲午夜免费视频| 亚洲精品久久久蜜桃| 亚洲精品国产视频| 一区二区三区免费在线观看| 一区二区三区四区精品在线视频| 亚洲色图视频网| 亚洲精品少妇30p| 性做久久久久久久免费看| 日韩中文字幕91| 美日韩黄色大片| 丁香啪啪综合成人亚洲小说| eeuss鲁片一区二区三区在线看| 97精品国产露脸对白| 欧美又粗又大又爽| 911精品国产一区二区在线| 欧美一区二区视频在线观看2020 | 另类小说欧美激情| 捆绑紧缚一区二区三区视频| 国产福利91精品一区二区三区| 成人99免费视频| 欧美精品日韩一区| 国产亚洲欧美一级| 亚洲一区二区三区自拍| 免费成人av在线| 99精品久久只有精品| 91麻豆精品国产91久久久久 | 国产91清纯白嫩初高中在线观看| 91蝌蚪porny| 日韩三级av在线播放| 成人免费在线播放视频| 日韩av一二三| 97超碰欧美中文字幕| 日韩午夜av一区| 亚洲精品五月天| 国产成人免费视频网站高清观看视频 | 日韩欧美国产综合一区 | 91精品久久久久久久久99蜜臂| 久久久久一区二区三区四区| 亚洲国产一区视频| 国产精品456| 欧美一区午夜精品| 亚洲人成伊人成综合网小说| 国产在线播精品第三| 在线观看不卡一区| 亚洲欧洲在线观看av| 国产美女精品人人做人人爽 | 日韩免费成人网| 玉米视频成人免费看| 粉嫩蜜臀av国产精品网站| 6080午夜不卡| 亚洲bt欧美bt精品777| 99久久精品国产网站| 久久婷婷成人综合色| 青草国产精品久久久久久| 欧美中文字幕一区二区三区 | www.99精品| 久久久www成人免费无遮挡大片| 亚洲国产三级在线| 在线中文字幕一区二区| 亚洲欧洲无码一区二区三区| 国产成人亚洲综合a∨婷婷图片| 日韩视频永久免费| 日韩成人一区二区三区在线观看| 欧美亚洲日本一区| 麻豆91在线播放免费| 欧美精品v国产精品v日韩精品| 亚洲在线成人精品| 欧美体内she精高潮| 亚洲一二三区不卡| 在线这里只有精品| 亚洲与欧洲av电影| 欧美精品高清视频| 久久国产综合精品| 久久免费美女视频| 国产精品99久久久| 国产精品久久久久久久久果冻传媒 | 日韩亚洲欧美一区| 麻豆专区一区二区三区四区五区| 日韩欧美国产综合| 国产美女精品一区二区三区| 日本一区二区三区在线不卡| 成人h精品动漫一区二区三区| 亚洲国产高清在线| 日本久久电影网| 亚洲第一精品在线| 欧美成人一区二区三区| 国产福利视频一区二区三区| 欧美激情一区二区三区不卡| 99精品黄色片免费大全| 亚洲一级不卡视频| 精品国产三级电影在线观看| 国产成人一区在线| 亚洲一区二区av电影| 日韩一区二区在线观看视频播放| 久久99精品久久久久婷婷| 国产亚洲欧美在线| 欧美性色黄大片| 久久99国产乱子伦精品免费| 国产精品天天摸av网| 在线观看日韩精品| 免费久久99精品国产| 国产精品久久午夜| 欧美一区二区三区四区高清| www.66久久| 蜜桃一区二区三区在线| 国产精品久久久久影院| 在线电影一区二区三区| 豆国产96在线|亚洲| 日韩精品色哟哟| 中文字幕在线观看不卡视频| 欧美一级精品在线| 日本乱人伦一区| 国产一区二区h| 三级成人在线视频| 中文字幕一区二区在线播放| 欧美一区二区三区日韩| 一本高清dvd不卡在线观看| 国产麻豆午夜三级精品| 日韩专区中文字幕一区二区| 亚洲婷婷综合色高清在线| 日韩精品一区在线观看| 欧美性猛片aaaaaaa做受| 不卡视频一二三| 国产在线观看免费一区| 日本不卡中文字幕| 亚洲免费观看高清完整版在线观看 | 亚洲视频在线一区二区| 精品第一国产综合精品aⅴ| 欧美日韩精品欧美日韩精品一| av电影在线观看完整版一区二区| 国产毛片一区二区| 免费xxxx性欧美18vr| 亚洲国产成人精品视频| 亚洲三级在线观看| 亚洲欧洲韩国日本视频| 国产欧美精品一区二区三区四区| 欧美一区二区三区四区视频| 欧美日韩电影在线播放| 91老师片黄在线观看| 在线综合视频播放| 欧美三区免费完整视频在线观看| www.在线成人| 国产69精品久久777的优势| 国产成人亚洲综合色影视| 国产成人综合精品三级| 国产一区二区毛片| 国产成人精品影视| 豆国产96在线|亚洲| 成人av片在线观看| 91视频免费看| 色香蕉久久蜜桃| 欧美色图激情小说| 欧美日韩mp4| 欧美岛国在线观看| 久久精品欧美一区二区三区不卡| 久久久精品tv| 自拍偷拍亚洲激情| 一区二区三区影院| 青青草精品视频| 国产乱理伦片在线观看夜一区| 国产成人av电影在线| 波多野结衣一区二区三区| www.99精品| 欧美男女性生活在线直播观看| 337p亚洲精品色噜噜狠狠| 欧美一区二区大片| 久久色.com| 中文字幕一区二区5566日韩| 伊人婷婷欧美激情| 日韩av网站在线观看| 国产福利91精品一区| 99精品久久久久久| 538在线一区二区精品国产| 日韩一级在线观看| 国产调教视频一区| 亚洲国产成人tv| 国产乱码精品一区二区三| 色婷婷av久久久久久久| 制服丝袜中文字幕亚洲| 国产精品久久久久久久午夜片| 亚洲一区二区三区四区的 | 国产清纯在线一区二区www| 亚洲精品久久7777| 激情图片小说一区| 制服丝袜亚洲播放| 亚洲国产精品精华液ab| 亚洲国产成人av好男人在线观看| 激情综合色播五月| 色狠狠色噜噜噜综合网| 26uuu色噜噜精品一区二区| 亚洲免费在线视频一区 二区| 经典三级一区二区| 欧美亚洲一区三区| 国产精品久久久久久久久晋中| 久久不见久久见免费视频7| 色综合久久中文综合久久97|