42 inline typename PB_DS_CLASS_C_DEC::iterator
 
   44 find_by_order(size_type order)
 
   46   node_iterator it = node_begin();
 
   47   node_iterator end_it = node_end();
 
   51       node_iterator l_it = it.get_l_child();
 
   52       const size_type o = (l_it == end_it)? 0 : l_it.get_metadata();
 
   61       it = it.get_r_child();
 
   65   return base_type::end_iterator();
 
   69 inline typename PB_DS_CLASS_C_DEC::const_iterator
 
   71 find_by_order(size_type order)
 const 
   72 { 
return const_cast<PB_DS_CLASS_C_DEC*
>(
this)->find_by_order(order); }
 
   75 inline typename PB_DS_CLASS_C_DEC::size_type
 
   77 order_of_key(key_const_reference r_key)
 const 
   79   node_const_iterator it = node_begin();
 
   80   node_const_iterator end_it = node_end();
 
   82   const cmp_fn& r_cmp_fn = 
const_cast<PB_DS_CLASS_C_DEC*
>(
this)->get_cmp_fn();
 
   86       node_const_iterator l_it = it.get_l_child();
 
   88       if (r_cmp_fn(r_key, this->extract_key(*(*it))))
 
   90       else if (r_cmp_fn(this->extract_key(*(*it)), r_key))
 
   92       ord += (l_it == end_it)? 1 : 1 + l_it.get_metadata();
 
   93       it = it.get_r_child();
 
   97       ord += (l_it == end_it)? 0 : l_it.get_metadata();
 
  107 operator()(node_iterator node_it, node_const_iterator end_nd_it)
 const 
  109   node_iterator l_it = node_it.get_l_child();
 
  110   const size_type l_rank = (l_it == end_nd_it) ? 0 : l_it.get_metadata();
 
  112   node_iterator r_it = node_it.get_r_child();
 
  113   const size_type r_rank = (r_it == end_nd_it) ? 0 : r_it.get_metadata();
 
  115   const_cast<metadata_reference
>(node_it.get_metadata())= 1 + l_rank + r_rank;
 
  120 ~tree_order_statistics_node_update()