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

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

?? tvnode.c

?? TV-tree的c實現(xiàn)源碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
  for (j = count; j > i; j--)      ric.Add(ricarray[j].ne, level);  Reinit();  for (j = 0; j <= i; j++)     Put(*ricarray[j].ne.u.b, pagesize);  thishandle.write();   delete [] narray;   delete [] barray;   delete [] darray;   delete [] ricarray;} ostream& operator<< (ostream& os, const Internal_TVNode& n){   os << "Level : " << n.level << "  Max fan-out : " <<  n.max_count << "  Current count : " << n.count << "   Size " << n.Size();   for (int i = 0; i < n.count ; i++)       os << "\nTVBranch " << i <<  "  " << n.entry[i];   return os;}ostream& operator<< (ostream& os, const Internal_TVNode*& n){   os << "Level : " << n->level << "  Max fan-out : " <<  n->max_count << "  Current count : " << n->count << "   Size " << n->Size();   for (int i = 0; i < n->count ; i++)       os << "\nTVBranch " << i <<  "  " << n->entry[i];   return os;}// Code for leaf nodeLeaf_TVNode::Leaf_TVNode(){   entry = NULL;}Leaf_TVNode::Leaf_TVNode(int maxc) : TVNode(maxc){   entry = new Leaf_Element[maxc];}Leaf_TVNode::Leaf_TVNode(const Leaf_TVNode &n){   count = n.count;   max_count = n.max_count;   entry = new Leaf_Element[n.max_count];   for (int i = 0; i < n.count; i++)     entry[i] = n.entry[i];}Leaf_TVNode::~Leaf_TVNode(){   delete [] entry;}Leaf_TVNode& Leaf_TVNode::Reinit(){   delete [] entry;   entry = new Leaf_Element[max_count];   count = 0;   return *this;}Leaf_TVNode& Leaf_TVNode::operator=(const Leaf_TVNode& n){   if (max_count > 0)      delete [] entry;   count = n.count;   max_count = n.max_count;   entry = new Leaf_Element[n.max_count];   for (int i = 0; i < n.count; i++)     entry[i] = n.entry[i];   return *this;}int Leaf_TVNode::TVNodeType() const{  return LEAF_NODE;}int Leaf_TVNode::Size() const{  int bsize=0;  for (int i=0; i < count; i++)      bsize += entry[i].Size();  return sizeof(count) + sizeof(max_count) +  bsize;}int Leaf_TVNode::Remove(int bno, float min_fill_percent){   assert((bno < count) && (bno > 0));   assert(min_fill_percent > 0);   entry[bno] = entry[count - 1];   if (--(count) < min_fill_percent * max_count / 100.0)      return(NODE_EMPTY);   else      return(NODE_NOT_EMPTY);}TVNodeEntry Leaf_TVNode::Fetch(int i) const{  assert (i < max_count);  TVNodeEntry f(entry[i]);  return f;}int Leaf_TVNode::Put(const Leaf_Element& b, int pagesize){   int result;   if (b.Size() + Size() <= pagesize)      {         if (count >= max_count)            {               // current array not big enough, create new one               Leaf_Element *newentry = new Leaf_Element[max_count * 2];               max_count = max_count * 2;               for (int i = 0; i < count ; i++)                   newentry[i] = entry[i];               newentry[count++] = b;               delete [] entry;               entry = newentry;            }         else            {              entry[count++] = b;              result = NODE_NOT_FULL;            }      }   else      result = NODE_FULL;   return result;}TVRectangle Leaf_TVNode::MinBound(VCOM_TYPE (*gfeat)(int, char*), int sig_dim){   TVector *varray = new TVector[count];   int exec_count = 0;   TVRectangle d;   for (int i = 0; i < count; i++)       varray[i] = entry[i].GetTVector();   d = MinBoundTVRectangle(varray, count, sig_dim);   while ((d.GetRadius() < PRECISION) && (exec_count < NO_OF_FEATURES))       {           for (int i = 0; i < count; i++)               varray[i] = entry[i].GetTVector(varray[i].GetDim() + sig_dim, gfeat);           d = MinBoundTVRectangle(varray, count, sig_dim);           exec_count++;       }   delete [] varray;   return d;}int Leaf_TVNode::FixSize(){   return sizeof(int) * 2;}// Redistribute the nodes from the split return entriesLeaf_TVNode& Leaf_TVNode::ReDistribute(SplitReturn& sret, Leaf_Element *larray, int pagesize){  Reinit();    if (sret.newnode)    delete [] sret.newnode;  if (sret.parts > 1)     sret.newnode = new TVNode*[sret.parts - 1];  for (int i = 0; i < sret.parts - 1; i++)     sret.newnode[i] = new Leaf_TVNode(max(max_count, CONSERVE_MAX_ELEMENT_FACTOR));  for (int j = 0; j < sret.entrycount; j++)     {	if (sret.distribute[j])	    sret.newnode[sret.distribute[j] - 1]->Put(larray[j], pagesize);        else	   Put(larray[j], pagesize);     }  return *this;      }SplitReturn Leaf_TVNode::Split(const TVBranch &b, const TVNodehandle& nh, int pagesize, float min_fill_percent, int sig_dim){   assert(0);   SplitReturn sret(1);   return sret;}SplitReturn Leaf_TVNode::Split(const Leaf_Element &e, const TVNodehandle& nh, VCOM_TYPE (*gfeat)(int, char*), int pagesize, float min_fill_percent, int sig_dim){//cout << "----------\n";//cout << "Splitting :\n" << *this << endl;//cout << e << endl;   SplitReturn sret(count + 1);   Leaf_Element *larray = new Leaf_Element[count + 1];   int i = 0;   for (; i < count; i++)          larray[i] = entry[i];   larray[count] = e;   // The splitting algorithm   SplitLeafAlg(sret, larray, gfeat, Leaf_TVNode::FixSize(), pagesize, min_fill_percent, sig_dim);               // Rebuilt the nodes   ReDistribute(sret, larray, pagesize);//cout << "SplitReturn : " << sret.bound[0] << "  " << sret.bound[1] << endl;   nh.write();   delete [] larray;   return sret;}// Code for removing item from a node to be reinserted somewhere elsevoid Leaf_TVNode::SetReInsert(const TVBranch& b, ReInsertClass& ric, const TVNodehandle& nh, float reinsert_percent, int pagesize, float min_fill_percent, int sig_dim){  assert(0);}void Leaf_TVNode::SetReInsert(const Leaf_Element& le, ReInsertClass& ric, const TVNodehandle& nh, float reinsert_percent, int pagesize, float min_fill_percent, int sig_dim){//cout << "SetReInsert\n";   TVNodeEntry *narray = new TVNodeEntry[count + 1];   Leaf_Element *larray = new Leaf_Element[count + 1];   TVector *varray = new TVector[count + 1];   ReInsertCal *ricarray = new ReInsertCal[count + 1];   ReInsertCal swap;   int total_branch = count + 1;   int cursize, requiresize;   TVRectangle bound;   int i;   for (i = 0; i < count; i++)      {         // need to do this, because TVNodeEntry have only pointers         larray[i] = entry[i];         ricarray[i].ne.Put(larray[i]);         varray[i] = ricarray[i].ne.GetTVector();      }   bound = MinBoundTVRectangle(varray, count, sig_dim);   larray[count] = le;   ricarray[count].ne.Put(larray[count]);   for (i = 0;  i < total_branch ; i++)      {        int d = bound.GetCenter().GetDim();        ricarray[i].distance = bound.GetCenter().Distance(larray[i].GetTVector().ProjectFront(d));      }/*cout << "---- SetReInsert ----- " << endl;cout << "Bound : " << bound << endl;for (i = 0; i < total_branch; i++)    cout << "Entry : " << i << ") " << ricarray[i].ne << "\t\t" << ricarray[i].distance << endl;*/   qsort(ricarray, total_branch, sizeof(ReInsertCal), sort_ricarray);/*cout << "-- sorted --" << endl;for (i = 0; i < total_branch; i++)    cout << "Entry : " << i << ") " << ricarray[i].ne << "\t\t" << ricarray[i].distance << endl;cout << "---------------------" << endl;*/   int reinsert_size = 0;   int flag = TRUE;   i = count;   cursize = Size() + le.Size();   requiresize = (int)(pagesize * (100 - reinsert_percent) / 100);   while (cursize > requiresize)     {       cursize -= ricarray[i--].ne.u.e->Size();     }   if (cursize < (pagesize * min_fill_percent) / 100)      {        cursize +=  ricarray[++i].ne.u.e->Size();        if (cursize > pagesize)           {             // encounter a large element             swap = ricarray[i];             ricarray[i] = ricarray[0];             ricarray[0] = swap;             cursize = Size() + le.Size();             while (cursize > requiresize)                  cursize -= ricarray[i--].ne.u.e->Size();           }      }  // 0..i is to keep, reinsert others  int j;  for (j = count; j > i; j--)      ric.Add(ricarray[j].ne, 0);  Reinit();  for (j = 0; j <= i; j++)     Put(*(ricarray[j].ne.u.e), pagesize);  nh.write();  delete [] narray;  delete [] larray;  delete [] varray;  delete [] ricarray;}ostream& operator<< (ostream& os, const Leaf_TVNode& n){   os << "Max fan-out : " <<  n.max_count << "  Current count : " << n.count << "   Size " <<n.Size() << "\n";   if (n.count > 0)      os << n.entry[0];   for (int i = 1; i < n.count ; i++)       os <<  " / " << n.entry[i];   return os;}ostream& Leaf_TVNode::PrintLeaf(ostream& os,  void (*PrintData)(ostream&, char *), int oneperline){   os << "Max fan-out : " <<  max_count << "  Current count : " << count << "   Size " << Size() << "\n";   if (count > 0)      {	os << "Data : ";	PrintData(os, entry[0]());	os << " (" << entry[0].GetTVector().GetDim() << ")";	os << entry[0].GetTVector();      }   for (int i = 1; i < count ; i++)       {          os <<  (oneperline ? "\nData : " : " / ");	  PrintData(os, entry[i]());	  os << " (" << entry[i].GetTVector().GetDim() << ")";	  os << entry[i].GetTVector();       }   return os;}// Info to be passed back from the split routine SplitReturn::SplitReturn(int ent){  entrycount = ent;  distribute = new int[ent];    parts = 0;  newnode = NULL;  bound = NULL;}SplitReturn::SplitReturn(const SplitReturn& s){  entrycount = s.entrycount;  distribute = new int[entrycount];  for (int i = 0; i < entrycount; i++)       distribute[i] = s.distribute[i];  parts = s.parts;  if (parts)     {	if (s.newnode)	  {             newnode = new TVNode*[parts - 1]; 	     for (int j = 0; j < parts - 1; j++)	        newnode[j] = s.newnode[j];          }	else	  newnode = NULL;	if (s.bound)	 {             bound = new TVRectangle[parts]; 	     for (int j = 0; j < parts ; j++)	        bound[j] = s.bound[j];	 }	else	  bound = NULL;     }}SplitReturn::~SplitReturn() {  delete [] distribute;  delete [] newnode;  delete [] bound;}SplitReturn& SplitReturn::operator=(const SplitReturn& s){  if (entrycount != s.entrycount)     {	 if (distribute)	     delete [] distribute;         entrycount = s.entrycount;         distribute = new int[entrycount];     }  for (int i = 0; i < entrycount; i++)       distribute[i] = s.distribute[i];  if (parts != s.parts)     {        if (newnode)	   delete [] newnode;        if (bound)	   delete [] bound;       parts = s.parts;       if (parts > 1)          newnode = new TVNode*[parts - 1];        else	  newnode = NULL;       if (parts)          bound = new TVRectangle[parts];        else	  bound = NULL;     }  if (parts)     {	if (s.newnode)	  {	     for (int j = 0; j < parts - 1; j++)	        newnode[j] = s.newnode[j];          }	else	  newnode = NULL;	if (s.bound)	 {	     for (int j = 0; j < parts ; j++)	        bound[j] = s.bound[j];	 }	else	  bound = NULL;     }  return *this;}int SplitReturn::HasBound(){  return (bound != NULL);}// TVNode iteratorTVNodeIter::TVNodeIter(){  n = NULL;  count = -1;}TVNodeIter::TVNodeIter(TVNode *ni){  n = ni;  count = 0;}TVNodeIter::TVNodeIter(TVNode& ni){  n = &ni;  count = 0;}TVNodeIter::TVNodeIter(const TVNodeIter& nit){  n = nit.n;  count = nit.count;}int TVNodeIter::GetLastIterInd(){  return count - 1;}TVNodeEntry TVNodeIter::Iter(){  TVNodeEntry f;  if (count >= n->GetCount())     f.ftype = not_defined;  else     f = n->Fetch(count++);  return f;}void TVNodeIter::Reset(){  count = 0;}int TVNodeIter::Count(){   return n->GetCount();}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
激情五月激情综合网| 欧美国产97人人爽人人喊| 日韩三区在线观看| 久久久美女毛片| 亚洲精品日韩综合观看成人91| 午夜久久久久久久久| 国产麻豆视频一区二区| 91亚洲精华国产精华精华液| 欧美伦理电影网| 久久新电视剧免费观看| 亚洲女同女同女同女同女同69| 日韩高清一级片| 成人ar影院免费观看视频| 欧美日韩精品一区二区天天拍小说 | 老色鬼精品视频在线观看播放| 国产美女在线观看一区| 色成年激情久久综合| 欧美一级黄色大片| 国产精品久久三| 日韩成人免费在线| 成人福利视频在线看| 欧美一级二级在线观看| 国产精品久久久久一区二区三区| 性做久久久久久免费观看欧美| 国产毛片精品视频| 欧美日韩精品欧美日韩精品| 国产欧美日产一区| 琪琪一区二区三区| 色乱码一区二区三区88| 久久蜜桃av一区精品变态类天堂| 一片黄亚洲嫩模| 岛国av在线一区| 日韩免费高清视频| 亚洲一线二线三线视频| 成人污污视频在线观看| 日韩欧美国产系列| 亚洲综合久久av| 成人v精品蜜桃久久一区| 欧美一区二区三区在线电影| 日韩理论片中文av| 国产精品白丝av| 91精品国产乱| 亚洲图片欧美一区| 99国产精品99久久久久久| 精品国产一区二区三区四区四| 亚洲亚洲精品在线观看| 91亚洲男人天堂| 国产视频一区在线观看 | 欧美日韩一二区| 国产精品色噜噜| 激情丁香综合五月| 7777女厕盗摄久久久| 一区二区三区资源| 99精品国产一区二区三区不卡| 久久久久国产一区二区三区四区| 免费观看91视频大全| 欧美日韩午夜精品| 亚洲中国最大av网站| 91尤物视频在线观看| 国产精品每日更新| 粉嫩在线一区二区三区视频| 欧美一区二区精品久久911| 亚洲成在人线免费| 欧美亚男人的天堂| 亚洲午夜精品在线| 欧美午夜电影在线播放| 亚洲综合在线第一页| 欧洲视频一区二区| 一区二区三区色| 欧美这里有精品| 亚洲图片自拍偷拍| 欧美日韩国产小视频| 午夜欧美电影在线观看| 欧美日韩一卡二卡| 日韩高清欧美激情| 日韩欧美第一区| 精品一二三四区| 久久久另类综合| 国产激情精品久久久第一区二区| 久久精品一区二区三区不卡| 精品在线免费视频| 欧美白人最猛性xxxxx69交| 精品一区二区精品| 国产欧美日韩亚州综合| 波多野结衣在线一区| 亚洲欧美一区二区三区孕妇| 91免费国产视频网站| 亚洲综合一二区| 欧美乱妇15p| 久久99在线观看| 国产视频一区在线观看| 91小视频免费观看| 亚洲一区二区视频在线观看| 欧美电影一区二区三区| 麻豆成人综合网| 国产视频一区二区在线| 99re这里只有精品6| 艳妇臀荡乳欲伦亚洲一区| 欧美日韩精品系列| 韩国一区二区在线观看| 中文字幕第一区| 欧美最新大片在线看| 日韩黄色一级片| 久久久不卡网国产精品二区| eeuss影院一区二区三区| 亚洲一区二区三区在线| 日韩丝袜情趣美女图片| 国产成人8x视频一区二区| 亚洲精品综合在线| 欧美一区国产二区| 国产成人精品亚洲午夜麻豆| 亚洲欧美另类久久久精品2019| 欧美日韩久久一区二区| 国产一区啦啦啦在线观看| 亚洲免费在线观看| 91精品国产一区二区三区香蕉 | 国产校园另类小说区| 色综合天天天天做夜夜夜夜做| 亚洲电影一级片| 久久综合丝袜日本网| 色综合中文字幕国产 | 蜜桃视频在线一区| 国产精品麻豆视频| 69精品人人人人| 成人爽a毛片一区二区免费| 亚洲18色成人| 中文字幕va一区二区三区| 欧美日韩激情一区| 丁香五精品蜜臀久久久久99网站| 亚洲午夜影视影院在线观看| 国产亚洲va综合人人澡精品| 欧美日韩一级大片网址| 成人免费黄色在线| 日本特黄久久久高潮| 亚洲三级免费电影| 久久这里都是精品| 欧美私模裸体表演在线观看| 国产成人激情av| 免费欧美在线视频| 亚洲精品日韩一| 久久精品欧美一区二区三区麻豆| 91激情五月电影| 国产精品99久久不卡二区| 亚洲国产日产av| 国产精品三级久久久久三级| 欧美一区二区三区四区视频| av午夜精品一区二区三区| 免费观看在线色综合| 一区二区三区精品久久久| 国产亚洲女人久久久久毛片| 欧美猛男超大videosgay| 91麻豆成人久久精品二区三区| 国内精品写真在线观看| 婷婷开心激情综合| 亚洲精品视频在线| 国产精品久久久久久久久动漫| 日韩一区二区在线观看| 欧美伊人久久久久久午夜久久久久| 国产99精品在线观看| 久久国产精品99久久人人澡| 亚洲综合色成人| 亚洲免费观看视频| 国产精品成人在线观看| 久久久欧美精品sm网站| 精品国精品自拍自在线| 91麻豆精品国产综合久久久久久 | 国产精品夫妻自拍| 国产亚洲精品久| 精品国精品国产| 精品少妇一区二区三区视频免付费| 欧美精品电影在线播放| 欧美日韩一区二区欧美激情| 在线亚洲+欧美+日本专区| 91丨九色丨尤物| 99久久99久久综合| a亚洲天堂av| 99re6这里只有精品视频在线观看| 成人性视频免费网站| 成人免费毛片片v| 福利91精品一区二区三区| 国产成人精品免费在线| 国产成都精品91一区二区三| 国产aⅴ综合色| 成人在线综合网| www.综合网.com| 97成人超碰视| 色欧美片视频在线观看在线视频| 91一区二区三区在线观看| 一本大道综合伊人精品热热| 99久久精品99国产精品| 在线看日韩精品电影| 欧美亚洲一区三区| 欧美日韩国产bt| 欧美一级在线视频| 精品国产制服丝袜高跟| 国产欧美1区2区3区| 中文字幕一区在线观看视频| 亚洲你懂的在线视频| 亚洲影视资源网| 欧美a级一区二区|