#include <stl_tree.h>
Inheritance diagram for rb_tree:


|
|||||
|
Definition at line 423 of file stl_tree.h. |
|
|||||
|
Definition at line 426 of file stl_tree.h. Referenced by rb_tree< key_type, value_type, select1st< value_type >, key_compare, Alloc >::color. |
|
|||||
|
Definition at line 496 of file stl_tree.h. |
|
|||||
|
Definition at line 431 of file stl_tree.h. |
|
|||||
|
Definition at line 433 of file stl_tree.h. |
|
|||||
|
Definition at line 507 of file stl_tree.h. Referenced by rb_tree< key_type, value_type, select1st< value_type >, key_compare, Alloc >::rbegin, and rb_tree< key_type, value_type, select1st< value_type >, key_compare, Alloc >::rend. |
|
|||||
|
Definition at line 436 of file stl_tree.h. |
|
|||||
|
Definition at line 494 of file stl_tree.h. |
|
|||||
|
Definition at line 428 of file stl_tree.h. |
|
|||||
|
Definition at line 434 of file stl_tree.h. Referenced by rb_tree< key_type, value_type, select1st< value_type >, key_compare, Alloc >::color, and rb_tree< key_type, value_type, select1st< value_type >, key_compare, Alloc >::key. |
|
|||||
|
Definition at line 430 of file stl_tree.h. |
|
|||||
|
Definition at line 424 of file stl_tree.h. |
|
|||||
|
Definition at line 425 of file stl_tree.h. |
|
|||||
|
Definition at line 432 of file stl_tree.h. Referenced by rb_tree< key_type, value_type, select1st< value_type >, key_compare, Alloc >::value. |
|
|||||
|
Definition at line 504 of file stl_tree.h. Referenced by rb_tree< key_type, value_type, select1st< value_type >, key_compare, Alloc >::rbegin, and rb_tree< key_type, value_type, select1st< value_type >, key_compare, Alloc >::rend. |
|
|||||
|
Definition at line 435 of file stl_tree.h. Referenced by rb_tree< key_type, value_type, select1st< value_type >, key_compare, Alloc >::max_size, and rb_tree< key_type, value_type, select1st< value_type >, key_compare, Alloc >::size. |
|
|||||
|
Definition at line 429 of file stl_tree.h. Referenced by rb_tree< key_type, value_type, select1st< value_type >, key_compare, Alloc >::create_node. |
|
|||||
|
Definition at line 422 of file stl_tree.h. |
|
||||||||||
|
Definition at line 523 of file stl_tree.h.
00524 : node_count(0), key_compare(comp) { init(); } |
|
||||||||||
|
Definition at line 526 of file stl_tree.h.
00527 : node_count(0), key_compare(x.key_compare) 00528 { 00529 header = get_node(); 00530 color(header) = __rb_tree_red; 00531 if (x.root() == 0) { 00532 root() = 0; 00533 leftmost() = header; 00534 rightmost() = header; 00535 } 00536 else { 00537 __STL_TRY { 00538 root() = __copy(x.root(), header); 00539 } 00540 __STL_UNWIND(put_node(header)); 00541 leftmost() = minimum(root()); 00542 rightmost() = maximum(root()); 00543 } 00544 node_count = x.node_count; 00545 } |
|
|||||||||
|
Definition at line 546 of file stl_tree.h.
|
|
||||||||||||||||
|
Definition at line 877 of file stl_tree.h. References __erase, __STL_TRY, __STL_UNWIND, clone_node, __rb_tree_node_base::left, left, __rb_tree_node_base::parent, right, and __rb_tree_node_base::right. Referenced by operator=, and rb_tree< key_type, value_type, select1st< value_type >, key_compare, Alloc >::rb_tree.
00877 {
00878 // structural copy. x and p must be non-null.
00879 link_type top = clone_node(x);
00880 top->parent = p;
00881
00882 __STL_TRY {
00883 if (x->right)
00884 top->right = __copy(right(x), top);
00885 p = top;
00886 x = left(x);
00887
00888 while (x != 0) {
00889 link_type y = clone_node(x);
00890 p->left = y;
00891 y->parent = p;
00892 if (x->right)
00893 y->right = __copy(right(x), y);
00894 p = y;
00895 x = left(x);
00896 }
00897 }
00898 __STL_UNWIND(__erase(top));
00899
00900 return top;
00901 }
|
|
||||||||||
|
Definition at line 904 of file stl_tree.h. References destroy_node, left, and right. Referenced by __copy, and rb_tree< key_type, value_type, select1st< value_type >, key_compare, Alloc >::clear.
00904 {
00905 // erase without rebalancing
00906 while (x != 0) {
00907 __erase(right(x));
00908 link_type y = left(x);
00909 destroy_node(x);
00910 x = y;
00911 }
00912 }
|
|
||||||||||||||||||||
|
|
|
|||||||||
|
Definition at line 1059 of file stl_tree.h. References __black_count, __rb_tree_red, begin, __rb_tree_node_base::color, end, key, key_compare, left, __rb_tree_node_base::left, leftmost, __rb_tree_node_base::maximum, __rb_tree_node_base::minimum, __rb_tree_base_iterator::node, node_count, right, __rb_tree_node_base::right, rightmost, and root.
01060 {
01061 if (node_count == 0 || begin() == end())
01062 return node_count == 0 && begin() == end() &&
01063 header->left == header && header->right == header;
01064
01065 int len = __black_count(leftmost(), root());
01066 for (const_iterator it = begin(); it != end(); ++it) {
01067 link_type x = (link_type) it.node;
01068 link_type L = left(x);
01069 link_type R = right(x);
01070
01071 if (x->color == __rb_tree_red)
01072 if ((L && L->color == __rb_tree_red) ||
01073 (R && R->color == __rb_tree_red))
01074 return false;
01075
01076 if (L && key_compare(key(x), key(L)))
01077 return false;
01078 if (R && key_compare(key(R), key(x)))
01079 return false;
01080
01081 if (!L && !R && __black_count(x, root()) != len)
01082 return false;
01083 }
01084
01085 if (leftmost() != __rb_tree_node_base::minimum(root()))
01086 return false;
01087 if (rightmost() != __rb_tree_node_base::maximum(root()))
01088 return false;
01089
01090 return true;
01091 }
|
|
|||||||||
|
Definition at line 557 of file stl_tree.h.
00557 { return leftmost(); }
|
|
|||||||||
|
Definition at line 556 of file stl_tree.h. Referenced by __rb_verify, erase, operator==, and rb_tree< key_type, value_type, select1st< value_type >, key_compare, Alloc >::rend.
00556 { return leftmost(); }
|
|
|||||||||
|
Definition at line 602 of file stl_tree.h. Referenced by erase, operator=, and rb_tree< key_type, value_type, select1st< value_type >, key_compare, Alloc >::~rb_tree.
00602 {
00603 if (node_count != 0) {
00604 __erase(root());
00605 leftmost() = header;
00606 root() = 0;
00607 rightmost() = header;
00608 node_count = 0;
00609 }
00610 }
|
|
||||||||||
|
Definition at line 450 of file stl_tree.h. Referenced by __copy.
00450 {
00451 link_type tmp = create_node(x->value_field);
00452 tmp->color = x->color;
00453 tmp->left = 0;
00454 tmp->right = 0;
00455 return tmp;
00456 }
|
|
||||||||||
|
Definition at line 484 of file stl_tree.h.
00484 { return (color_type&)(link_type(x)->color); }
|
|
||||||||||
|
Definition at line 477 of file stl_tree.h. Referenced by rb_tree< key_type, value_type, select1st< value_type >, key_compare, Alloc >::init, and rb_tree< key_type, value_type, select1st< value_type >, key_compare, Alloc >::rb_tree.
00477 { return (color_type&)(x->color); }
|
|
||||||||||
|
|
|
||||||||||
|
Definition at line 441 of file stl_tree.h. Referenced by rb_tree< key_type, value_type, select1st< value_type >, key_compare, Alloc >::clone_node.
|
|
||||||||||
|
Definition at line 458 of file stl_tree.h. Referenced by __erase, and erase.
|
|
|||||||||
|
Definition at line 568 of file stl_tree.h.
00568 { return node_count == 0; }
|
|
|||||||||
|
Definition at line 559 of file stl_tree.h.
00559 { return header; }
|
|
|||||||||
|
Definition at line 558 of file stl_tree.h. Referenced by __rb_verify, erase, operator==, and rb_tree< key_type, value_type, select1st< value_type >, key_compare, Alloc >::rbegin.
00558 { return header; }
|
|
||||||||||
|
|
|
||||||||||
|
|
|
||||||||||||||||
|
|
|
||||||||||||||||
|
Definition at line 915 of file stl_tree.h. References begin, clear, end, and erase.
|
|
||||||||||
|
|
|
||||||||||
|
Definition at line 856 of file stl_tree.h. References __rb_tree_rebalance_for_erase, destroy_node, __rb_tree_node_base::left, __rb_tree_base_iterator::node, node_count, __rb_tree_node_base::parent, and __rb_tree_node_base::right. Referenced by erase.
00856 {
00857 link_type y = (link_type) __rb_tree_rebalance_for_erase(position.node,
00858 header->parent,
00859 header->left,
00860 header->right);
00861 destroy_node(y);
00862 --node_count;
00863 }
|
|
||||||||||
|
|
|
||||||||||
|
|
|
|||||||||
|
Definition at line 438 of file stl_tree.h. Referenced by rb_tree< key_type, value_type, select1st< value_type >, key_compare, Alloc >::create_node, rb_tree< key_type, value_type, select1st< value_type >, key_compare, Alloc >::init, and rb_tree< key_type, value_type, select1st< value_type >, key_compare, Alloc >::rb_tree.
00438 { return rb_tree_node_allocator::allocate(); }
|
|
|||||||||
|
Definition at line 513 of file stl_tree.h. Referenced by rb_tree< key_type, value_type, select1st< value_type >, key_compare, Alloc >::rb_tree.
|
|
||||||||||||||||
|
|
|
||||||||||||||||
|
Definition at line 831 of file stl_tree.h. References insert_equal.
00832 {
00833 for ( ; first != last; ++first)
00834 insert_equal(*first);
00835 }
|
|
||||||||||||||||
|
|
|
||||||||||
|
Referenced by insert_equal. |
|
||||||||||||||||
|
|
|
||||||||||||||||
|
Definition at line 846 of file stl_tree.h. References insert_unique.
00847 {
00848 for ( ; first != last; ++first)
00849 insert_unique(*first);
00850 }
|
|
||||||||||||||||
|
|
|
||||||||||
|
Referenced by insert_unique. |
|
||||||||||
|
Definition at line 483 of file stl_tree.h.
|
|
||||||||||
|
Definition at line 476 of file stl_tree.h. Referenced by __rb_verify.
00476 { return KeyOfValue()(value(x)); }
|
|
|||||||||
|
Definition at line 555 of file stl_tree.h.
00555 { return key_compare; }
|
|
||||||||||
|
Definition at line 479 of file stl_tree.h.
00479 { return (link_type&)(x->left); }
|
|
||||||||||
|
Definition at line 472 of file stl_tree.h. Referenced by __copy, __erase, and __rb_verify.
00472 { return (link_type&)(x->left); }
|
|
|||||||||
|
||||||||||
|
|
|
||||||||||
|
|
|
|||||||||
|
Definition at line 570 of file stl_tree.h.
00570 { return size_type(-1); }
|
|
||||||||||
|
Definition at line 489 of file stl_tree.h. Referenced by operator=, and rb_tree< key_type, value_type, select1st< value_type >, key_compare, Alloc >::rb_tree.
00489 {
00490 return (link_type) __rb_tree_node_base::maximum(x);
00491 }
|
|
||||||||||
|
Definition at line 486 of file stl_tree.h. Referenced by operator=, and rb_tree< key_type, value_type, select1st< value_type >, key_compare, Alloc >::rb_tree.
00486 {
00487 return (link_type) __rb_tree_node_base::minimum(x);
00488 }
|
|
||||||||||
|
Definition at line 655 of file stl_tree.h. References __copy, clear, key_compare, leftmost, maximum, minimum, node_count, rightmost, and root.
00655 {
00656 if (this != &x) {
00657 // Note that Key may be a constant type.
00658 clear();
00659 node_count = 0;
00660 key_compare = x.key_compare;
00661 if (x.root() == 0) {
00662 root() = 0;
00663 leftmost() = header;
00664 rightmost() = header;
00665 }
00666 else {
00667 root() = __copy(x.root(), header);
00668 leftmost() = minimum(root());
00669 rightmost() = maximum(root());
00670 node_count = x.node_count;
00671 }
00672 }
00673 return *this;
00674 }
|
|
||||||||||
|
Definition at line 481 of file stl_tree.h.
00481 { return (link_type&)(x->parent); }
|
|
||||||||||
|
Definition at line 474 of file stl_tree.h.
00474 { return (link_type&)(x->parent); }
|
|
||||||||||
|
Definition at line 439 of file stl_tree.h. Referenced by rb_tree< key_type, value_type, select1st< value_type >, key_compare, Alloc >::create_node, rb_tree< key_type, value_type, select1st< value_type >, key_compare, Alloc >::destroy_node, rb_tree< key_type, value_type, select1st< value_type >, key_compare, Alloc >::rb_tree, and rb_tree< key_type, value_type, select1st< value_type >, key_compare, Alloc >::~rb_tree.
00439 { rb_tree_node_allocator::deallocate(p); }
|
|
|||||||||
|
Definition at line 561 of file stl_tree.h.
00561 {
00562 return const_reverse_iterator(end());
00563 }
|
|
|||||||||
|
Definition at line 560 of file stl_tree.h.
00560 { return reverse_iterator(end()); }
|
|
|||||||||
|
Definition at line 565 of file stl_tree.h.
00565 {
00566 return const_reverse_iterator(begin());
00567 }
|
|
|||||||||
|
Definition at line 564 of file stl_tree.h.
00564 { return reverse_iterator(begin()); }
|
|
||||||||||
|
Definition at line 480 of file stl_tree.h.
00480 { return (link_type&)(x->right); }
|
|
||||||||||
|
Definition at line 473 of file stl_tree.h. Referenced by __copy, __erase, and __rb_verify.
00473 { return (link_type&)(x->right); }
|
|
|||||||||
|
|||||||||
|
|||||||||
|
Definition at line 569 of file stl_tree.h. Referenced by operator==.
00569 { return node_count; }
|
|
||||||||||
|
Definition at line 572 of file stl_tree.h.
00572 {
00573 __STD::swap(header, t.header);
00574 __STD::swap(node_count, t.node_count);
00575 __STD::swap(key_compare, t.key_compare);
00576 }
|
|
||||||||||
|
|
|
||||||||||
|
|
|
||||||||||
|
Definition at line 482 of file stl_tree.h.
00482 { return ((link_type)x)->value_field; }
|
|
||||||||||
|
Definition at line 475 of file stl_tree.h. Referenced by rb_tree< key_type, value_type, select1st< value_type >, key_compare, Alloc >::key.
00475 { return x->value_field; }
|
|
|||||
|
Definition at line 465 of file stl_tree.h. Referenced by rb_tree< key_type, value_type, select1st< value_type >, key_compare, Alloc >::swap. |
|
|||||
|
|||||
| Documentation generated on Thu May 2 15:03:41 2002 |
Generated with doxygen 1.2.12 by Dimitri van Heesch , 1997-2001 |