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

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

?? tree.hh

?? 一個德國人Kasper Peeters用C++ template寫的tree的STL實現(xiàn)
?? HH
?? 第 1 頁 / 共 5 頁
字號:
   tmp->next_sibling=0;   return tmp;   }template <class T, class tree_node_allocator>template <class iter>iter tree<T, tree_node_allocator>::append_child(iter position, iter other)   {   assert(position.node!=head);   assert(position.node);   sibling_iterator aargh=append_child(position, value_type());   return replace(aargh, other);   }template <class T, class tree_node_allocator>template <class iter>iter tree<T, tree_node_allocator>::append_children(iter position, sibling_iterator from, sibling_iterator to)   {   assert(position.node!=head);   assert(position.node);   iter ret=from;   while(from!=to) {      insert_subtree(position.end(), from);      ++from;      }   return ret;   }template <class T, class tree_node_allocator>typename tree<T, tree_node_allocator>::pre_order_iterator tree<T, tree_node_allocator>::set_head(const T& x)   {   assert(head->next_sibling==feet);   return insert(iterator(feet), x);   }template <class T, class tree_node_allocator>template <class iter>iter tree<T, tree_node_allocator>::insert(iter position, const T& x)   {   if(position.node==0) {      position.node=feet; // Backward compatibility: when calling insert on a null node,                          // insert before the feet.      }   tree_node* tmp = alloc_.allocate(1,0);   kp::constructor(&tmp->data, x);   tmp->first_child=0;   tmp->last_child=0;   tmp->parent=position.node->parent;   tmp->next_sibling=position.node;   tmp->prev_sibling=position.node->prev_sibling;   position.node->prev_sibling=tmp;   if(tmp->prev_sibling==0) {      if(tmp->parent) // when inserting nodes at the head, there is no parent         tmp->parent->first_child=tmp;      }   else      tmp->prev_sibling->next_sibling=tmp;   return tmp;   }template <class T, class tree_node_allocator>typename tree<T, tree_node_allocator>::sibling_iterator tree<T, tree_node_allocator>::insert(sibling_iterator position, const T& x)   {   tree_node* tmp = alloc_.allocate(1,0);   kp::constructor(&tmp->data, x);   tmp->first_child=0;   tmp->last_child=0;   tmp->next_sibling=position.node;   if(position.node==0) { // iterator points to end of a subtree      tmp->parent=position.parent_;      tmp->prev_sibling=position.range_last();      tmp->parent->last_child=tmp;      }   else {      tmp->parent=position.node->parent;      tmp->prev_sibling=position.node->prev_sibling;      position.node->prev_sibling=tmp;      }   if(tmp->prev_sibling==0) {      if(tmp->parent) // when inserting nodes at the head, there is no parent         tmp->parent->first_child=tmp;      }   else      tmp->prev_sibling->next_sibling=tmp;   return tmp;   }template <class T, class tree_node_allocator>template <class iter>iter tree<T, tree_node_allocator>::insert_after(iter position, const T& x)   {   tree_node* tmp = alloc_.allocate(1,0);   kp::constructor(&tmp->data, x);   tmp->first_child=0;   tmp->last_child=0;   tmp->parent=position.node->parent;   tmp->prev_sibling=position.node;   tmp->next_sibling=position.node->next_sibling;   position.node->next_sibling=tmp;   if(tmp->next_sibling==0) {      if(tmp->parent) // when inserting nodes at the head, there is no parent         tmp->parent->last_child=tmp;      }   else {      tmp->next_sibling->prev_sibling=tmp;      }   return tmp;   }template <class T, class tree_node_allocator>template <class iter>iter tree<T, tree_node_allocator>::insert_subtree(iter position, const iterator_base& subtree)   {   // insert dummy   iter it=insert(position, value_type());   // replace dummy with subtree   return replace(it, subtree);   }// template <class T, class tree_node_allocator>// template <class iter>// iter tree<T, tree_node_allocator>::insert_subtree(sibling_iterator position, iter subtree)//    {//    // insert dummy//    iter it(insert(position, value_type()));//    // replace dummy with subtree//    return replace(it, subtree);//    }template <class T, class tree_node_allocator>template <class iter>iter tree<T, tree_node_allocator>::replace(iter position, const T& x)   {   kp::destructor(&position.node->data);   kp::constructor(&position.node->data, x);   return position;   }template <class T, class tree_node_allocator>template <class iter>iter tree<T, tree_node_allocator>::replace(iter position, const iterator_base& from)   {   assert(position.node!=head);   tree_node *current_from=from.node;   tree_node *start_from=from.node;   tree_node *current_to  =position.node;   // replace the node at position with head of the replacement tree at from   erase_children(position);     tree_node* tmp = alloc_.allocate(1,0);   kp::constructor(&tmp->data, (*from));   tmp->first_child=0;   tmp->last_child=0;   if(current_to->prev_sibling==0) {      current_to->parent->first_child=tmp;      }   else {      current_to->prev_sibling->next_sibling=tmp;      }   tmp->prev_sibling=current_to->prev_sibling;   if(current_to->next_sibling==0) {      current_to->parent->last_child=tmp;      }   else {      current_to->next_sibling->prev_sibling=tmp;      }   tmp->next_sibling=current_to->next_sibling;   tmp->parent=current_to->parent;   kp::destructor(&current_to->data);   alloc_.deallocate(current_to,1);   current_to=tmp;      // only at this stage can we fix 'last'   tree_node *last=from.node->next_sibling;   pre_order_iterator toit=tmp;   // copy all children   do {      assert(current_from!=0);      if(current_from->first_child != 0) {         current_from=current_from->first_child;         toit=append_child(toit, current_from->data);         }      else {         while(current_from->next_sibling==0 && current_from!=start_from) {            current_from=current_from->parent;            toit=parent(toit);            assert(current_from!=0);            }         current_from=current_from->next_sibling;         if(current_from!=last) {            toit=append_child(parent(toit), current_from->data);            }         }      } while(current_from!=last);   return current_to;   }template <class T, class tree_node_allocator>typename tree<T, tree_node_allocator>::sibling_iterator tree<T, tree_node_allocator>::replace(   sibling_iterator orig_begin,    sibling_iterator orig_end,    sibling_iterator new_begin,    sibling_iterator new_end)   {   tree_node *orig_first=orig_begin.node;   tree_node *new_first=new_begin.node;   tree_node *orig_last=orig_first;   while((++orig_begin)!=orig_end)      orig_last=orig_last->next_sibling;   tree_node *new_last=new_first;   while((++new_begin)!=new_end)      new_last=new_last->next_sibling;   // insert all siblings in new_first..new_last before orig_first   bool first=true;   pre_order_iterator ret;   while(1==1) {      pre_order_iterator tt=insert_subtree(pre_order_iterator(orig_first), pre_order_iterator(new_first));      if(first) {         ret=tt;         first=false;         }      if(new_first==new_last)         break;      new_first=new_first->next_sibling;      }   // erase old range of siblings   bool last=false;   tree_node *next=orig_first;   while(1==1) {      if(next==orig_last)          last=true;      next=next->next_sibling;      erase((pre_order_iterator)orig_first);      if(last)          break;      orig_first=next;      }   return ret;   }template <class T, class tree_node_allocator>template <typename iter>iter tree<T, tree_node_allocator>::flatten(iter position)   {   if(position.node->first_child==0)      return position;   tree_node *tmp=position.node->first_child;   while(tmp) {      tmp->parent=position.node->parent;      tmp=tmp->next_sibling;      }    if(position.node->next_sibling) {      position.node->last_child->next_sibling=position.node->next_sibling;      position.node->next_sibling->prev_sibling=position.node->last_child;      }   else {      position.node->parent->last_child=position.node->last_child;      }   position.node->next_sibling=position.node->first_child;   position.node->next_sibling->prev_sibling=position.node;   position.node->first_child=0;   position.node->last_child=0;   return position;   }template <class T, class tree_node_allocator>template <typename iter>iter tree<T, tree_node_allocator>::reparent(iter position, sibling_iterator begin, sibling_iterator end)   {   tree_node *first=begin.node;   tree_node *last=first;   if(begin==end) return begin;   // determine last node   while((++begin)!=end) {      last=last->next_sibling;      }   // move subtree   if(first->prev_sibling==0) {      first->parent->first_child=last->next_sibling;      }   else {      first->prev_sibling->next_sibling=last->next_sibling;      }   if(last->next_sibling==0) {      last->parent->last_child=first->prev_sibling;      }   else {      last->next_sibling->prev_sibling=first->prev_sibling;      }   if(position.node->first_child==0) {      position.node->first_child=first;      position.node->last_child=last;      first->prev_sibling=0;      }   else {      position.node->last_child->next_sibling=first;      first->prev_sibling=position.node->last_child;      position.node->last_child=last;      }   last->next_sibling=0;   tree_node *pos=first;   while(1==1) {      pos->parent=position.node;      if(pos==last) break;      pos=pos->next_sibling;      }   return first;   }template <class T, class tree_node_allocator>template <typename iter> iter tree<T, tree_node_allocator>::reparent(iter position, iter from)   {   if(from.node->first_child==0) return position;   return reparent(position, from.node->first_child, end(from));   }template <class T, class tree_node_allocator>template <typename iter> iter tree<T, tree_node_allocator>::move_after(iter target, iter source)   {   tree_node *dst=target.node;   tree_node *src=source.node;   assert(dst);   assert(src);   if(dst==src) return source;   // take src out of the tree   if(src->prev_sibling!=0) src->prev_sibling->next_sibling=src->next_sibling;   else                     src->parent->first_child=src->next_sibling;   if(src->next_sibling!=0) src->next_sibling->prev_sibling=src->prev_sibling;   else                     src->parent->last_child=src->prev_sibling;   // connect it to the new point   if(dst->next_sibling!=0) dst->next_sibling->prev_sibling=src;   else                     dst->parent->last_child=src;   src->next_sibling=dst->next_sibling;   dst->next_sibling=src;   src->prev_sibling=dst;   src->parent=dst->parent;   return src;   }template <class T, class tree_node_allocator>template <typename iter> iter tree<T, tree_node_allocator>::move_before(iter target, iter source)   {   tree_node *dst=target.node;   tree_node *src=source.node;   assert(dst);   assert(src);   if(dst==src) return source;   // take src out of the tree   if(src->prev_sibling!=0) src->prev_sibling->next_sibling=src->next_sibling;   else                     src->parent->first_child=src->next_sibling;   if(src->next_sibling!=0) src->next_sibling->prev_sibling=src->prev_sibling;   else                     src->parent->last_child=src->prev_sibling;   // connect it to the new point   if(dst->prev_sibling!=0) dst->prev_sibling->next_sibling=src;   else                     dst->parent->first_child=src;   src->prev_sibling=dst->prev_sibling;   dst->prev_sibling=src;   src->next_sibling=dst;   src->parent=dst->parent;   return src;   }// specialisation for sibling_iteratorstemplate <class T, class tree_node_allocator>typename tree<T, tree_node_allocator>::sibling_iterator tree<T, tree_node_allocator>::move_before(sibling_iterator target,                                                                                          sibling_iterator source)   {   tree_node *dst=target.node;   tree_node *src=source.node;   tree_node *dst_prev_sibling;   if(dst==0) { // must then be an end iterator      dst_prev_sibling=target.parent_->last_child;      assert(dst_prev_sibling);      }   else dst_prev_sibling=dst->prev_sibling;   assert(src);   if(dst==src) return source;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本不卡在线视频| 久久久久97国产精华液好用吗 | 95精品视频在线| 久久99九九99精品| 裸体一区二区三区| 蜜桃视频在线一区| 精品一二三四区| 国产一区二区视频在线播放| 秋霞av亚洲一区二区三| 日韩在线一二三区| 麻豆极品一区二区三区| 久久se精品一区精品二区| 久久精品99国产精品| 理论片日本一区| 国产一区二区三区四| 国产成人av电影在线| 成人福利视频网站| 日本韩国一区二区三区视频| 欧美手机在线视频| 日韩欧美的一区| 国产日本亚洲高清| 日韩理论电影院| 午夜亚洲国产au精品一区二区| 人人超碰91尤物精品国产| 狠狠色丁香久久婷婷综| 99久久精品国产麻豆演员表| 欧美日韩激情一区| 欧美精品一区二区三区久久久| 国产欧美日韩在线| 一区二区三区成人| 久草这里只有精品视频| 99久久精品费精品国产一区二区| 欧美日韩一区二区不卡| 国产色爱av资源综合区| 亚洲在线观看免费| 国产一区二区毛片| 欧美色视频在线| 久久婷婷国产综合精品青草| 亚洲精品高清在线| 国模少妇一区二区三区| 在线观看欧美日本| 久久嫩草精品久久久精品一| 洋洋av久久久久久久一区| 国内精品自线一区二区三区视频| 91免费版在线看| 精品国产伦一区二区三区观看方式| 中文字幕一区二区在线观看| 蜜臀va亚洲va欧美va天堂| 91蝌蚪porny| 亚洲精品在线免费观看视频| 亚洲午夜免费电影| 91色视频在线| 国产日韩欧美精品一区| 日韩国产欧美在线视频| 成人免费毛片app| 欧美成人女星排行榜| 亚洲成人一二三| 色综合咪咪久久| 中文字幕精品—区二区四季| 免费的成人av| 69成人精品免费视频| 亚洲自拍偷拍网站| eeuss影院一区二区三区| www欧美成人18+| 精品一区二区三区久久| 欧美久久久久久久久中文字幕| 亚洲男人电影天堂| 99精品热视频| 亚洲免费观看高清完整| 岛国精品一区二区| 国产午夜久久久久| 国产成a人亚洲| 国产精品天干天干在观线| 韩国av一区二区三区| 精品电影一区二区| 国产一本一道久久香蕉| 精品福利一区二区三区免费视频| 日韩精品久久理论片| 7777精品伊人久久久大香线蕉的| 视频一区在线播放| 在线播放视频一区| 蜜桃视频在线一区| 精品国产乱码久久久久久老虎| 裸体歌舞表演一区二区| 久久亚洲影视婷婷| 成人在线一区二区三区| 亚洲天堂2014| 欧美综合欧美视频| 免费成人美女在线观看.| 日韩一区二区视频在线观看| 国产美女娇喘av呻吟久久| 国产亚洲女人久久久久毛片| 成人影视亚洲图片在线| 国产精品第四页| 欧美色电影在线| 久久成人久久爱| 中文字幕av一区二区三区高| 色国产综合视频| 日韩精品电影在线观看| 久久久噜噜噜久久中文字幕色伊伊 | 色8久久人人97超碰香蕉987| 亚洲美女电影在线| 一本大道av伊人久久综合| 一区二区三区精品在线| 欧美一区午夜精品| 国产一区二区女| 一区二区三区视频在线看| 日韩一区二区三区视频| 成人av在线看| 日本不卡一二三| 日韩一区欧美一区| 欧美日韩国产综合视频在线观看| 另类人妖一区二区av| 亚洲美女少妇撒尿| 26uuu亚洲| 欧美网站一区二区| 精品一区二区免费在线观看| 亚洲女同一区二区| 久久综合九色综合97婷婷女人| 91在线视频18| 狠狠色丁香婷婷综合久久片| 亚洲国产综合人成综合网站| 久久久久国产精品麻豆| 欧美一区二区网站| www.视频一区| 国内精品免费在线观看| 亚洲国产视频a| 国产精品福利电影一区二区三区四区| 91麻豆精品久久久久蜜臀| 99久久精品情趣| 国产二区国产一区在线观看| 日日夜夜精品视频免费| 亚洲乱码国产乱码精品精的特点| 久久久久久综合| 欧美大度的电影原声| 91久久精品日日躁夜夜躁欧美| 国产电影精品久久禁18| 老色鬼精品视频在线观看播放| 午夜成人免费视频| 伊人性伊人情综合网| 亚洲欧洲成人自拍| 国产女主播一区| 国产亚洲va综合人人澡精品 | 中文字幕不卡三区| 精品国产99国产精品| 欧美美女一区二区| 在线观看av一区| 一本大道久久a久久综合| 一本色道综合亚洲| 97se亚洲国产综合自在线观| caoporn国产一区二区| av不卡免费在线观看| 91免费看视频| 91精品办公室少妇高潮对白| 91网页版在线| 色94色欧美sute亚洲线路一ni| 91热门视频在线观看| 在线观看视频欧美| 欧美美女网站色| 日韩精品资源二区在线| 精品久久国产老人久久综合| 亚洲精品一区二区三区香蕉| 久久精品亚洲国产奇米99| 欧美国产乱子伦 | 日韩午夜小视频| 日韩欧美亚洲另类制服综合在线| 91精品国产一区二区人妖| 日韩午夜中文字幕| 国产欧美日韩在线视频| 一区二区三区在线免费| 香蕉成人伊视频在线观看| 免费成人在线观看| 国产一区二区三区四区在线观看| 丁香婷婷综合色啪| 色综合久久中文字幕| 欧美夫妻性生活| 国产午夜三级一区二区三| 亚洲美女偷拍久久| 美女视频黄久久| 成人一区二区在线观看| 在线免费不卡电影| 欧美xxxxx裸体时装秀| 最新不卡av在线| 石原莉奈在线亚洲二区| 国产盗摄视频一区二区三区| 99精品在线免费| 欧美一级欧美三级| 亚洲欧洲成人精品av97| 日精品一区二区| 成人精品视频一区二区三区尤物| 在线一区二区三区四区五区 | 亚洲自拍偷拍九九九| 久久精品国产**网站演员| 成人网页在线观看| 欧美美女喷水视频| 国产精品久久久久精k8| 日本aⅴ精品一区二区三区 | 精品国产一区久久| 一区二区三区中文字幕在线观看| 捆绑调教一区二区三区|