41#ifdef PB_DS_CLASS_C_DEC 
   46split(key_const_reference r_key, PB_DS_CLASS_C_DEC& other)
 
   48  PB_DS_ASSERT_VALID((*
this))
 
   49  PB_DS_ASSERT_VALID(other)
 
   57  if (Cmp_Fn::operator()(r_key, PB_DS_V2F(*
begin())))
 
   60      PB_DS_ASSERT_VALID((*
this))
 
   61      PB_DS_ASSERT_VALID(other)
 
   65  if (!Cmp_Fn::operator()(r_key, PB_DS_V2F(*(end() - 1))))
 
   73      PB_DS_ASSERT_VALID((*
this))
 
   74      PB_DS_ASSERT_VALID(other)
 
   78  iterator it = upper_bound(r_key);
 
   79  PB_DS_CLASS_C_DEC new_other(other, other);
 
   80  new_other.copy_from_ordered_range(it, end());
 
   81  PB_DS_CLASS_C_DEC new_this(*this, *this);
 
   82  new_this.copy_from_ordered_range(begin(), it);
 
   85  other.update(other.node_begin(), (node_update*)(&other));
 
   86  update(node_begin(), (node_update*)this);
 
   87  other.value_swap(new_other);
 
   89  PB_DS_ASSERT_VALID((*this))
 
   90  PB_DS_ASSERT_VALID(other)
 
   96join(PB_DS_CLASS_C_DEC& other)
 
   98  PB_DS_ASSERT_VALID((*
this))
 
   99  PB_DS_ASSERT_VALID(other)
 
  100  if (other.m_size == 0)
 
  106      PB_DS_ASSERT_VALID((*
this))
 
  107      PB_DS_ASSERT_VALID(other)
 
  111  const 
bool greater = Cmp_Fn::operator()(PB_DS_V2F(*(end() - 1)),
 
  112                                          PB_DS_V2F(*other.begin()));
 
  114  const 
bool lesser = Cmp_Fn::operator()(PB_DS_V2F(*(other.end() - 1)),
 
  115                                         PB_DS_V2F(*begin()));
 
  117  if (!greater && !lesser)
 
  118    __throw_join_error();
 
  120  PB_DS_CLASS_C_DEC new_this(*this, *this);
 
  123    new_this.copy_from_ordered_range(begin(), end(),
 
  124                                     other.begin(), other.end());
 
  126    new_this.copy_from_ordered_range(other.begin(), other.end(),
 
  130  value_swap(new_this);
 
  132  PB_DS_ASSERT_VALID((*this))
 
  133  PB_DS_ASSERT_VALID(other)
 
_Tp * begin(valarray< _Tp > &__va) noexcept
Return an iterator pointing to the first element of the valarray.