亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
亚洲美女屁股眼交3| 欧美在线播放高清精品| 国产日产欧美一区| 国产成人免费xxxxxxxx| 久久久国产精品麻豆| 国产一区二区精品在线观看| 国产婷婷色一区二区三区在线| 国产一区二区三区免费观看| 欧美国产日韩a欧美在线观看 | 国产99久久精品| 国产精品乱码一区二三区小蝌蚪| youjizz久久| 亚洲精品日产精品乱码不卡| 欧美日韩免费观看一区二区三区| 视频一区视频二区中文| 欧美sm极限捆绑bd| 成人h精品动漫一区二区三区| 亚洲视频网在线直播| 欧美日韩国产经典色站一区二区三区 | 日韩经典中文字幕一区| 精品国产一区久久| 波多野结衣精品在线| 亚洲在线观看免费视频| 日韩免费在线观看| 成人动漫一区二区在线| 日韩精品乱码av一区二区| 久久久美女毛片| 欧美性受xxxx| 国模娜娜一区二区三区| 一二三区精品视频| 亚洲精品一区二区三区四区高清| 99久久综合精品| 日本美女一区二区三区| 日韩美女视频19| 日韩视频一区二区三区在线播放| 不卡视频一二三四| 美女高潮久久久| 亚洲区小说区图片区qvod| 欧美一区二区三区喷汁尤物| 成人国产精品视频| 琪琪久久久久日韩精品| 亚洲精品日韩一| 国产亲近乱来精品视频| 欧美一级xxx| 色哟哟精品一区| 国产成人免费av在线| 蜜臀99久久精品久久久久久软件| 亚洲欧美另类久久久精品| 26uuu成人网一区二区三区| 在线精品视频免费观看| 成人av在线资源网| 国产乱码精品一区二区三区忘忧草| 一区二区三区成人在线视频| 国产精品女同一区二区三区| 欧美电视剧在线看免费| 欧洲精品视频在线观看| 成人免费毛片嘿嘿连载视频| 久久精品噜噜噜成人av农村| 亚洲高清视频在线| 亚洲欧美一区二区久久| 亚洲国产成人自拍| 久久久午夜精品理论片中文字幕| 88在线观看91蜜桃国自产| 日本高清视频一区二区| 不卡的看片网站| 国产91精品在线观看| 久久成人免费日本黄色| 日韩和欧美一区二区| 亚洲一区二区三区在线看| 亚洲欧美另类小说视频| 国产精品国产三级国产普通话99| 久久亚洲一区二区三区四区| 日韩欧美在线网站| 日韩精品一区二区三区在线观看 | 国产东北露脸精品视频| 韩国精品主播一区二区在线观看 | 懂色av中文一区二区三区| 极品美女销魂一区二区三区| 日本欧美久久久久免费播放网| 亚洲午夜在线观看视频在线| 一区二区三区国产精华| 亚洲综合久久久久| 亚洲一区二区三区四区五区黄| 亚洲精品视频在线观看免费| 亚洲激情五月婷婷| 亚洲激情六月丁香| 亚洲午夜激情网页| 无码av中文一区二区三区桃花岛| 亚洲成人免费av| 丝袜美腿亚洲色图| 蜜桃精品在线观看| 久久草av在线| 国产成人亚洲精品青草天美| 成人性视频网站| 91视频免费播放| 欧美亚州韩日在线看免费版国语版| 在线视频一区二区三区| 欧美久久久一区| 日韩欧美亚洲国产另类| 久久久精品天堂| 亚洲欧洲另类国产综合| 一区二区三区国产豹纹内裤在线| 亚洲成人777| 久草精品在线观看| 99视频在线观看一区三区| 欧美中文字幕亚洲一区二区va在线| 777久久久精品| 欧美国产综合色视频| 亚洲一二三级电影| 韩国女主播成人在线| 91视频www| 欧美一区二区三区四区五区| 国产日韩欧美不卡在线| 亚洲一区二区三区激情| 久久99国产精品尤物| 色综合天天综合网天天看片 | 精品国产91久久久久久久妲己| 日本一区二区成人在线| 亚洲成人激情av| 国产成人精品午夜视频免费| 精品视频一区二区不卡| 国产亚洲欧美一区在线观看| 亚洲乱码国产乱码精品精98午夜| 国产欧美视频在线观看| 精品日韩欧美在线| 亚洲精品欧美专区| 免费精品视频在线| 福利一区在线观看| 91.com视频| 国产精品乱码一区二区三区软件 | 欧美美女喷水视频| 精品国产伦一区二区三区免费| 国产精品丝袜黑色高跟| 亚洲天堂中文字幕| av电影在线不卡| 91麻豆精品91久久久久同性| 欧美日韩mp4| 亚洲日本乱码在线观看| 日韩电影网1区2区| www.亚洲精品| 69精品人人人人| 欧美激情一区在线| 日韩黄色在线观看| av电影在线观看不卡| 日韩一区二区三区精品视频| 久久婷婷一区二区三区| 久久99久久99精品免视看婷婷 | 亚洲一卡二卡三卡四卡无卡久久| 老司机精品视频导航| 99国产欧美另类久久久精品| 91麻豆精品国产91久久久久久| 国产精品激情偷乱一区二区∴| 免费成人美女在线观看.| 99在线精品一区二区三区| 日韩一区二区三区在线观看| 亚洲三级在线免费| av不卡在线观看| 精品国产污网站| 性做久久久久久免费观看欧美| 国产成人精品影院| 欧美一级日韩一级| 亚洲高清不卡在线观看| 99久久久无码国产精品| 国产亚洲视频系列| 久久精品国产99国产| 欧美日韩午夜精品| 亚洲精品久久嫩草网站秘色| 激情都市一区二区| 精品三级av在线| 日日骚欧美日韩| 欧美性猛片xxxx免费看久爱| 亚洲成人av电影| 在线中文字幕一区二区| 国产精品日日摸夜夜摸av| 国产伦精品一区二区三区免费迷 | 成人精品鲁一区一区二区| 精品成人在线观看| 天堂资源在线中文精品| 欧美在线免费播放| 亚洲视频在线一区二区| 丁香桃色午夜亚洲一区二区三区| 56国语精品自产拍在线观看| 亚洲国产你懂的| 99精品偷自拍| 国产精品久久久一本精品| 免费在线观看日韩欧美| 精品处破学生在线二十三| 欧美精品在线一区二区| 亚洲18女电影在线观看| 91免费版在线看| 日韩国产高清在线| 制服.丝袜.亚洲.中文.综合| 日韩影视精彩在线| 久久综合久久综合久久综合| 极品少妇xxxx精品少妇| 国产片一区二区三区| 不卡的电视剧免费网站有什么| 亚洲一区二区三区四区五区黄| 欧美日韩一卡二卡三卡| 欧美aⅴ一区二区三区视频|