void IDMapper::increaseBoundingBox_(DBoundingBox<2> & box) { DPosition<2> sub_min(rt_tolerance_, getAbsoluteMZTolerance_(box.minPosition().getY())), add_max(rt_tolerance_, getAbsoluteMZTolerance_(box.maxPosition().getY())); box.setMin(box.minPosition() - sub_min); box.setMax(box.maxPosition() + add_max); }
iterator eraser(iterator iter){ rb_node* z=iter.pointer(); rb_node* y=z; RB_Color y_color=y->_color; rb_node *x=NULL; if(z->_left==_nil ){ //case1: z's left child is nil x=z->_right; transplant(z, z->_right); } else{ if(z->_right==_nil){// case2: z's right child is nil x=z->_left; transplant(z, z->_left); } else{//case3: both children of z are not nil y=sub_min(z->_right).pointer(); y_color=y->_color; x=y->_right; if(y->_parent==z) x->_parent=y; else{ transplant(y, y->_right); //link z's right subtree into y, only y isn't z's child; y->_right=z->_right; y->_right->_parent=y; } transplant(z, y); //link z's subtree into y. y->_left=z->_left; y->_left->_parent=y; y->_color=z->_color; } } iterator result = ++iterator(z); delete z; if(y_color==black) eraser_fixup(x); return result; };
iterator begin(){ return sub_min(_root); }