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

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

?? x_tree.h

?? X-tree的C++源碼
?? H
?? 第 1 頁 / 共 5 頁
字號:
#ifndef __XTREE#define __XTREE#include "linlist.h"//////////////////////////////////////////////////////////////////////////////// defines//////////////////////////////////////////////////////////////////////////////#define MAXREAL 9.99e20#define MAX_DIMENSION 256#define EXT_SIZE 5#define MAX_OVERLAP 0.2#define MIN_FANOUT 0.35#ifndef S3#ifndef TRUE#define TRUE 1#define FALSE 0#endif  // TRUE#define min(a, b) (((a) < (b))? (a) : (b)  ) #define max(a, b) (((a) > (b))? (a) : (b)  ) #endif  // S3//////////////////////////////////////////////////////////////////////////////// C-prototypes//////////////////////////////////////////////////////////////////////////////float area(int dimension, float *mbr);float margin(int dimension, float *mbr);float overlap(int dimension, float *r1, float *r2);float OBJECT_DIST(const void  *Point1,const void  *Point2);float MINMAXDIST(const void  *Point, float *bounces);float MINDIST(const void *Point, float *bounces);bool inside(float &p, float &lb, float &ub);void enlarge(int dimension, float **mbr, float *r1, float *r2);bool is_inside(int dimension, float *p, float *mbr);bool section(int dimension, float *mbr1, float *mbr2);bool section_c(int dimension, float *mbr1, const void *center, float radius);void check_mbr(int dimension, float *mbr);int sort_lower_mbr(const void *d1, const void *d2);int sort_upper_mbr(const void *d1, const void *d2);int sort_center_mbr(const void *d1, const void *d2);int sort_min_dist(const void *element1, const void *element2);int prune_branch_list(float *nearest_distanz, const void *activebrunchList, int n);int test_branch_list(const void *abL, const void *sL, int n, int last);#ifndef S3void error(char *t, bool ex);#endif//////////////////////////////////////////////////////////////////////////////// externals//////////////////////////////////////////////////////////////////////////////extern int XTDirNode__dimension;extern void* XTDirNode__my_tree;extern int XTDataNode__dimension;extern float page_access;//////////////////////////////////////////////////////////////////////////////// enums / types//////////////////////////////////////////////////////////////////////////////enum SECTION {OVERLAP, INSIDE, S_NONE};enum R_OVERFLOW {SPLIT, SUPERNODE, NONE};typedef float *floatptr;typedef int bitvector;//////////////////////////////////////////////////////////////////////////////// classes//////////////////////////////////////////////////////////////////////////////#ifdef S3class Index;class Result;#endif // S3struct SortMbr{    int dimension;    float *mbr;    float *center;    int index;};struct DataStruct{    int dimension;    float *Data;};struct BranchList{    int entry_number;    float mindist;    float minmaxdist;    bool section;};template <class DATA> class XTNode{    friend class XTree<DATA>;protected:   XTree<DATA> *my_tree;                // pointer to X-tree    int capacity;                       // max. # of entries    int dimension;    int num_entries;                    // # of used entries    bool dirty;                         // TRUE, if node has to be writtenpublic:    int block;    char level;                         // level of the node in the tree    int get_num()                       // returns # of used entries    { return num_entries;}    virtual int get_num_of_data() = 0;  // returns number of data entries                                        // behind that node    virtual DATA * get(int i) = 0;      // returns the i-th object in the                                         // tree lying behind that node        virtual bool is_data_node() = 0;	// returns TRUE, if "this" is                                         // *XTDataNode     virtual float *get_mbr() = 0;       // returns mbr enclosing whole page    virtual void print()                // prints rectangles    { }    int topological_split(float **mbr, int **distribution, int *dim);                                        // splits an Array of mbr's into 2                                         // and returns in distribution                                        // which *m mbr's are to be                                        // moved    int overlap_free_split(float **mbr, int *split_hist, int **distribution, int *dim);#ifdef S3    virtual void neighbours(LinList<DATA> *sl,   		    float eps,           // berechnet fuer alle DATAs in		    Result *rs,          // sl die Nachbarn, die in der eps-		    norm_ptr norm) = 0;  // Umgebung liegen#endif // S3    virtual void nearest_neighbour_search(DATA *Point, DATA  *Nearest,float *nearest_distanz) = 0;    virtual void nearest_neighbour_search(DATA *Point, 		SortedLinList<DATA> *res, float *nearest_distanz) =  0;    virtual void range_query(float *mbr, SortedLinList<DATA> *res) = 0;    virtual void range_query(DATA *center, float radius, SortedLinList<DATA> *res) = 0;     virtual void overlapping(float *p, int *nodes_t) = 0;    virtual void nodes(int *nodes_a) = 0;    virtual void write_info(FILE *f) = 0;	    virtual R_OVERFLOW insert(DATA *d, XTNode<DATA> **sn, int *dim) = 0;                                         // inserts d recursivly, if there                                        // occurs a split, FALSE will be                                        // returned and in sn a                                         // pointer to the new node    virtual void region(float *mbr) = 0;                                        // prints all entries sectioning                                        // mbr    virtual void point_query(float *p) = 0;                                         // prints all entries equal to p                                             XTNode(XTree<DATA> *rt);    XTNode(XTree<DATA> *rt, int _block);    virtual ~XTNode();};template <class DATA> class XTDirNode: public XTNode<DATA>{    friend class XTree<DATA>;    int nodesize;                       // size of Directory Node                                        // nodesize > 1 => SuperNode    DirEntry<DATA> *entries;            // array of entries    bool son_is_data;                   // TRUE, if son is a data pagepublic:    int* intern_block;                  // array of blocks    int block_capacity;    void read_header(char* buffer);     // reads header of buffer    void read_from_buffer(char *buffer, int offset);// reads data from buffer    void write_to_buffer(char *buffer, int offset); // writes data to buffer    bool is_data_node()    {return FALSE;}    int get_num_of_data();              // returns number of data entries                                        // behind that node    DATA * get(int i);                  // returns the i-th object in the                                         // tree lying behind that node    void print();                       // prints rectangles    float *get_mbr();                   // returns mbr enclosing whole page    float *calc_mbr(DirEntry<DATA> *de, int num_entries);    					// calculates mbr enclosing DirEntries        void enter(DirEntry<DATA> *de);     // inserts new entry    void adapt_node(int mult);                 // adapt node to supernode      bool split(XTDirNode<DATA> **sn, int *dim);    					// splits directory page to *this and sn    					// returns FALSE, if supernode was created    int choose_subtree(float *brm);     // chooses best subtree for insertion#ifdef S3    void neighbours(LinList<DATA> *sl,  // berechnet fuer alle DATAs in		    float eps,          // sl die Nachbarn, die in der eps-		    Result *rs,         // Umgebung liegen		    norm_ptr norm);#endif // S3    void nearest_neighbour_search(DATA *QueryPoint, 				DATA *Nearest,float *nearest_distanz);    void nearest_neighbour_search(DATA *QueryPoint, 			SortedLinList<DATA> *res,			float *nearest_distanz);    void range_query(float *mbr, SortedLinList<DATA> *res);    void range_query(DATA *center, float radius, SortedLinList<DATA> *res);	    R_OVERFLOW insert(DATA *d, XTNode<DATA> **sn, int *dim);                                          // inserts d recursivly, if there                                        // occurs a split, FALSE will be                                        // returned and in sn a                                         // pointer to the new node    void region(float *mbr);            // prints all entries sectioning mbr    void point_query(float *p);         // prints all entries equal to p    void overlapping(float *p, int *nodes_t);    void nodes(int *nodes_a);    void write_info(FILE  *f);    XTDirNode(int _nodesize, XTree<DATA> *rt);                      XTDirNode(XTree<DATA> *rt, int _block);    virtual ~XTDirNode();};template <class DATA> class XTDataNode: public XTNode<DATA>{    DATA *data;                         // array of datapublic:    void read_from_buffer(char *buffer);// reads data from buffer    void write_to_buffer(char *buffer); // writes data to buffer    bool is_data_node()    {return TRUE;}    void print();                       // prints vector    int get_num_of_data();              // returns number of data entries                                        // in that node    DATA * get(int i);                  // returns the i-th object in this node     float *get_mbr();                   // returns mbr enclosing whole page     void split(XTDataNode<DATA> *sn, int *dim);    					// splits data page into sn and *this;                                        // returns split dimension#ifdef S3    void neighbours(LinList<DATA> *sl,  // berechnet fuer alle DATAs in		    float eps,          // sl die Nachbarn, die in der eps-		    Result *rs,         // Umgebung liegen		    norm_ptr norm);#endif // S3    void nearest_neighbour_search(DATA *QueryPoint, 				DATA *Nearest, float *nearest_distanz);    void nearest_neighbour_search(DATA *QueryPoint, 			SortedLinList<DATA> *res, float *nearest_distanz);    void range_query(float *mbr, SortedLinList<DATA> *res);    void range_query(DATA *center, float radius, SortedLinList<DATA> *res);    R_OVERFLOW insert(DATA *d, XTNode<DATA> **sn, int *dim);                                          // inserts d recursivly, if there                                        // occurs a split, FALSE will be                                        // returned and in sn a                                         // pointer to the new node    void region(float *mbr);            // prints all entries sectioning                                        // mbr    void point_query(float *mbr);       // prints all entries equal to p    void overlapping(float *p, int *nodes_t)    { nodes_t[0]++; }    void nodes(int *nodes_a)    { nodes_a[0]++; }    void write_info(FILE *f);    XTDataNode(XTree<DATA> *rt);                      XTDataNode(XTree<DATA> *rt, int _block);    virtual ~XTDataNode();};template <class DATA> class DirEntry{    friend class XTDirNode<DATA>;    friend class XTree<DATA>;    XTree<DATA> *my_tree;               // pointer to my Xtree    int son;                            // block # of son    XTNode<DATA> *son_ptr;              // pointer to son if in main mem.    bool son_is_data;                   // TRUE, if son is a data page    int dimension;                      // dimension of the box    float *bounces;                     // pointer to box    int num_of_data;                    // amount of data entries behind the                                        // son of this entry    bitvector history;			// split-history of sonpublic:    bool is_inside(float *v);           // tests, if v is inside the box    SECTION section(float *mbr);        // tests, if mbr intersects the box    XTNode<DATA>* get_son();            // returns pointer to the son,                                        // loads son if necessary    bool section_circle(DATA *center, float radius);    void read_from_buffer(char *buffer);// reads data from buffer       void write_to_buffer(char *buffer); // writes data to buffer      int get_size();                     // returns amount of needed buffer space    virtual DirEntry<DATA> & operator = (DirEntry<DATA> &_d);    DirEntry(int dimension = XTDirNode__dimension, 	     XTree<DATA> *rt = (XTree<DATA> *)XTDirNode__my_tree);    virtual ~DirEntry();};template <class DATA> class XTree {public:    friend class XTNode<DATA>;    friend class XTDirNode<DATA>;    friend class XTDataNode<DATA>;    int root;                            // block # of root node    XTNode<DATA> *root_ptr;              // root-node    bool root_is_data;                   // TRUE, if root is a data page    int dimension;                       // dimension of the datas    int num_of_data;	                 // # of stored data     int num_of_dnodes;	                 // # of stored data pages    int num_of_inodes;	                 // # of stored directory pages    CachedBlockFile *file;	         // storage manager for harddisc blocks    void load_root();                    // loads root_node into memory    int akt;                             // # of actually got data (get_next)    char *header;    float node_weight[20];               // weight for simulation of cache    char *block_buffer;                  // buffer for reading and writing nodes protected:    char *user_header;    void read_header(char *buffer);      // reads XTree header    void write_header(char *buffer);     // writes XTree headerpublic:    int get_num()                        // returns # of stored data    { return num_of_data; }                  void insert(DATA *d);                // inserts new data into tree#ifdef S3    bool erase(PolygonId &i)             // erases object # i    { error("XTree::erase: not implemented", FALSE); }#endif    DATA *get_first()                    // trace    { akt = 0; return get(akt); }        // through    DATA *get_next()                     // all     { akt++; return get(akt); }          // data    DATA *get(int i);                    // get i-th data    void set_node_weight(int cache_size); // calculate influence of cache#ifdef S3    void neighbours(LinList<DATA> *sl,   // berechnet fuer alle DATAs in		    float eps,           // sl die Nachbarn, die in der eps-		    Result *rs,          // Umgebung liegen		    norm_ptr norm);#endif // S3    void region(float *mbr);             // print all entries intersection                                          // the box mbr    void point_query(float *p);          // print all entries equal to p    void nearest_neighbour_search(DATA *QueryPoint, DATA *Nearest);        void nearest_neighbour_search(DATA *QueryPoint, SortedLinList<DATA> *res);    void k_nearest_neighbour_search(DATA *QueryPoint, int k, SortedLinList<DATA> *NeighborList);    void range_query(float *mbr, SortedLinList<DATA> *res);    void range_query(DATA *center, float radius, SortedLinList<DATA> *res);    void print_info(FILE *f);    void overlapping(float *p, int *nodes_t);    void nodes(int *nodes_a);    void write_info(FILE *f);    XTree(char *fname, 	  int _b_length, int cache_size, 	  int _dimension);    XTree(char *fname, int cache_size);    virtual ~XTree();};//////////////////////////////////////////////////////////////////////////////// implementation////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// DirEntry//////////////////////////////////////////////////////////////////////////////template <class DATA> DirEntry<DATA>::DirEntry(int _dimension, XTree<DATA> *rt){    dimension = _dimension;    my_tree = rt;    bounces = new float[2*dimension];    son_ptr = NULL;    num_of_data = 0;    history = 0;    }template <class DATA> DirEntry<DATA>::~DirEntry(){    if (bounces != NULL)        delete [] bounces;    if (son_ptr != NULL)	delete son_ptr;}template <class DATA> DirEntry<DATA>& DirEntry<DATA>::operator = (DirEntry &_d){    dimension = _d.dimension;    son = _d.son;    son_ptr = _d.son_ptr;    son_is_data = _d.son_is_data;    num_of_data = _d.num_of_data;    memcpy(bounces, _d.bounces, sizeof(float) * 2 * dimension);    history = _d.history;        return *this;}template <class DATA> bool DirEntry<DATA>::is_inside(float *v){    int i;    for (i = 0; i < dimension; i++)    {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲尤物视频在线| 久久久三级国产网站| 亚洲视频在线观看一区| 91在线免费看| 石原莉奈一区二区三区在线观看 | 亚洲国产精品尤物yw在线观看| 精品视频免费看| 激情图片小说一区| 一区二区三区欧美视频| 精品国产第一区二区三区观看体验| 成人一区二区三区| 蜜桃av一区二区| 亚洲三级电影全部在线观看高清| 国产欧美va欧美不卡在线| 欧美日韩国产综合视频在线观看| 国产成人午夜精品影院观看视频| 亚洲综合区在线| 性做久久久久久免费观看 | 欧美电影免费提供在线观看| 色视频一区二区| 国产麻豆91精品| 午夜精品福利一区二区蜜股av| 国产婷婷色一区二区三区| 欧美精品一级二级| 在线视频综合导航| 99热在这里有精品免费| 精品一区二区三区不卡| 日韩黄色免费电影| 国产伦理精品不卡| 色综合色狠狠综合色| 911精品产国品一二三产区| 91伊人久久大香线蕉| 国产乱妇无码大片在线观看| 久久99久久99小草精品免视看| 国产一区二区不卡在线| 在线观看视频一区二区| 欧美一区二区不卡视频| 91精品国产综合久久香蕉麻豆| 久久毛片高清国产| 亚洲午夜一二三区视频| 国产九色sp调教91| 欧美日韩一区二区三区在线| 国产欧美日韩精品一区| 亚洲午夜精品网| 国产福利91精品一区| 欧美少妇性性性| 91精品一区二区三区在线观看| 久久久亚洲高清| 性欧美疯狂xxxxbbbb| 不卡的av中国片| 日本福利一区二区| 欧美色精品在线视频| 国产精品久久久久毛片软件| 亚洲图片激情小说| 精品亚洲国内自在自线福利| 日本电影欧美片| 国产精品视频线看| 亚洲精品免费在线播放| 亚洲国产成人av好男人在线观看| 国产成人综合亚洲网站| 日韩一级片网站| 中文字幕欧美日韩一区| 日韩理论片中文av| 国产一区二区三区四区在线观看| 在线播放欧美女士性生活| 亚洲精品老司机| 成人午夜碰碰视频| 精品国产一区二区亚洲人成毛片| 午夜精品一区二区三区免费视频| 在线日韩国产精品| 亚洲美女视频在线观看| 日韩国产欧美三级| 国产成人精品影视| 国产亚洲成年网址在线观看| 精品亚洲porn| 日韩精品一区在线观看| 日本亚洲欧美天堂免费| 337p亚洲精品色噜噜噜| 蜜臀av一区二区在线免费观看| 91精品国产综合久久久久久久| 午夜久久久影院| 欧美一级片免费看| 国精产品一区一区三区mba桃花 | 视频一区在线视频| 欧美日本精品一区二区三区| 亚洲最新视频在线播放| 在线观看欧美精品| 秋霞国产午夜精品免费视频| 成人国产精品视频| 中文字幕在线不卡| 国产一区美女在线| 国产女主播视频一区二区| 国产经典欧美精品| 亚洲激情第一区| 欧美一区二区三区性视频| 黄色日韩三级电影| 国产欧美一区二区精品忘忧草| 成人精品电影在线观看| 亚洲欧美欧美一区二区三区| 欧美日本乱大交xxxxx| 国产美女精品一区二区三区| 国产精品色噜噜| 欧美在线不卡视频| 美国毛片一区二区三区| 日本一区免费视频| 色爱区综合激月婷婷| 捆绑调教美女网站视频一区| 欧美日韩在线播放三区| 国产一区在线看| 亚洲综合成人在线视频| 日韩欧美一二三区| 91在线精品一区二区三区| 天天影视色香欲综合网老头| 国产日韩精品久久久| 欧美体内she精高潮| 韩国v欧美v日本v亚洲v| 亚洲成人你懂的| 欧美国产国产综合| 日韩美女在线视频| 色婷婷综合激情| 国产剧情一区在线| 视频一区视频二区中文字幕| 国产精品久99| 精品久久免费看| 成人av网站在线观看免费| 偷拍与自拍一区| 亚洲男人的天堂在线aⅴ视频| 日韩欧美一二三区| 欧美精品18+| 色嗨嗨av一区二区三区| 成人网在线免费视频| 精品亚洲成av人在线观看| 石原莉奈在线亚洲二区| 亚洲国产精品欧美一二99| 国产精品毛片久久久久久| 久久综合久色欧美综合狠狠| 国产成人av一区| 免费成人在线观看| 亚洲成人av福利| 亚洲精品美腿丝袜| 国产精品美女久久久久久久| 欧美mv和日韩mv国产网站| 4438x亚洲最大成人网| 91黄色免费看| 91成人免费网站| 91蝌蚪porny九色| 91原创在线视频| 91亚洲国产成人精品一区二三| 丁香网亚洲国际| 偷拍日韩校园综合在线| 亚洲国产cao| 亚洲一区二区精品久久av| 亚洲欧美日韩精品久久久久| 亚洲欧洲中文日韩久久av乱码| 国产精品乱子久久久久| 国产欧美在线观看一区| 日本一区二区三区久久久久久久久不| 日韩亚洲国产中文字幕欧美| 欧美一区午夜视频在线观看| 欧美剧在线免费观看网站| 欧美挠脚心视频网站| 欧美日韩在线播放一区| 欧美一区二区三区精品| 欧美日韩高清一区| 91精品国产综合久久福利软件| 精品视频色一区| 欧美tickling挠脚心丨vk| 欧美va亚洲va香蕉在线| 欧美激情在线免费观看| 亚洲色图丝袜美腿| 亚洲国产综合人成综合网站| 亚洲成人午夜电影| 免费在线观看视频一区| 国产精品一区一区| www..com久久爱| 欧美性视频一区二区三区| 欧美日韩激情一区| 精品国产一区二区三区久久影院| 国产午夜精品一区二区三区视频| 国产精品麻豆一区二区| 亚洲伊人伊色伊影伊综合网| 美女爽到高潮91| 成人av电影在线网| 欧美日韩的一区二区| 久久亚洲一区二区三区明星换脸 | 91视频观看视频| 欧美美女一区二区| 国产午夜精品一区二区三区视频| 亚洲欧洲综合另类在线| 青青国产91久久久久久| 国产91高潮流白浆在线麻豆| 在线观看91精品国产入口| 日韩精品中文字幕一区| 中文字幕一区二区三区在线播放| 亚洲综合成人在线| 国产99久久精品| 欧美日韩国产小视频| 中文字幕av免费专区久久| 日本不卡高清视频| 一本到三区不卡视频|