42 template<
typename Pred>
 
   45 split(Pred pred, PB_DS_CLASS_C_DEC& other)
 
   47   PB_DS_ASSERT_VALID((*
this))
 
   50     typename entry_pred<value_type, Pred, _Alloc, simple_value>::type
 
   53   const size_type 
left = partition(pred_t(pred));
 
   54   _GLIBCXX_DEBUG_ASSERT(m_size >= 
left);
 
   56   const size_type ersd = m_size - left;
 
   57   _GLIBCXX_DEBUG_ASSERT(m_size >= ersd);
 
   59   const size_type new_size = resize_policy::get_new_size_for_arbitrary(left);
 
   60   const size_type other_actual_size = other.get_new_size_for_arbitrary(ersd);
 
   62   entry_pointer a_entries = 0;
 
   63   entry_pointer a_other_entries = 0;
 
   67       a_entries = s_entry_allocator.allocate(new_size);
 
   68       a_other_entries = s_entry_allocator.allocate(other_actual_size);
 
   73     s_entry_allocator.deallocate(a_entries, new_size);
 
   75       if (a_other_entries != 0)
 
   76     s_entry_allocator.deallocate(a_other_entries, other_actual_size);
 
   78       __throw_exception_again;
 
   81   for (size_type i = 0; i < other.m_size; ++i)
 
   82     erase_at(other.m_a_entries, i, s_no_throw_copies_ind);
 
   84   _GLIBCXX_DEBUG_ASSERT(new_size >= left);
 
   85   std::copy(m_a_entries, m_a_entries + left, a_entries);
 
   86   std::copy(m_a_entries + left, m_a_entries + m_size, a_other_entries);
 
   88   s_entry_allocator.deallocate(m_a_entries, m_actual_size);
 
   89   s_entry_allocator.deallocate(other.m_a_entries, other.m_actual_size);
 
   91   m_actual_size = new_size;
 
   92   other.m_actual_size = other_actual_size;
 
   97   m_a_entries = a_entries;
 
   98   other.m_a_entries = a_other_entries;
 
  103   resize_policy::notify_arbitrary(m_actual_size);
 
  104   other.notify_arbitrary(other.m_actual_size);
 
  106   PB_DS_ASSERT_VALID((*
this))
 
  107   PB_DS_ASSERT_VALID(other)
 
  113 join(PB_DS_CLASS_C_DEC& other)
 
  115   PB_DS_ASSERT_VALID((*
this))
 
  116   PB_DS_ASSERT_VALID(other)
 
  118   const size_type len = m_size + other.m_size;
 
  119   const size_type new_size = resize_policy::get_new_size_for_arbitrary(len);
 
  121   entry_pointer a_entries = 0;
 
  122   entry_pointer a_other_entries = 0;
 
  126       a_entries = s_entry_allocator.allocate(new_size);
 
  127       a_other_entries = s_entry_allocator.allocate(resize_policy::min_size);
 
  132     s_entry_allocator.deallocate(a_entries, new_size);
 
  134       if (a_other_entries != 0)
 
  135     s_entry_allocator.deallocate(a_other_entries, resize_policy::min_size);
 
  137       __throw_exception_again;
 
  140   std::copy(m_a_entries, m_a_entries + m_size, a_entries);
 
  141   std::copy(other.m_a_entries, other.m_a_entries + other.m_size,
 
  144   s_entry_allocator.deallocate(m_a_entries, m_actual_size);
 
  145   m_a_entries = a_entries;
 
  147   m_actual_size = new_size;
 
  148   resize_policy::notify_arbitrary(new_size);
 
  151   s_entry_allocator.deallocate(other.m_a_entries, other.m_actual_size);
 
  152   other.m_a_entries = a_other_entries;
 
  154   other.m_actual_size = resize_policy::min_size;
 
  155   other.notify_arbitrary(resize_policy::min_size);
 
  158   PB_DS_ASSERT_VALID((*
this))
 
  159   PB_DS_ASSERT_VALID(other)
 
ios_base & left(ios_base &__base)
Calls base.setf(ios_base::left, ios_base::adjustfield).