46   PB_DS_ASSERT_VALID((*
this))
 
   53       reallocate_metadata((node_update* )
this, 0);
 
   54       cond_dtor<size_type> cd(m_a_values, m_end_it, m_size);
 
   57   _GLIBCXX_DEBUG_ONLY(debug_base::clear();)
 
   60   m_end_it = m_a_values;
 
   61   PB_DS_ASSERT_VALID((*
this))
 
   65 template<
typename Pred>
 
   66 inline typename PB_DS_CLASS_C_DEC::size_type
 
   70   PB_DS_ASSERT_VALID((*
this))
 
   72 #ifdef PB_DS_REGRESSION 
   73     typename _Alloc::group_adjustor adjust(m_size);
 
   76   size_type new_size = 0;
 
   77   size_type num_val_ersd = 0;
 
   79   for (iterator source_it = 
begin(); source_it != m_end_it; ++source_it)
 
   80     if (!pred(*source_it))
 
   91   value_vector a_new_values = s_value_alloc.allocate(new_size);
 
   92   iterator target_it = a_new_values;
 
   93   cond_dtor<size_type> cd(a_new_values, target_it, new_size);
 
   94   _GLIBCXX_DEBUG_ONLY(debug_base::clear());
 
   95   for (iterator source_it = 
begin(); source_it != m_end_it; ++source_it)
 
   97       if (!pred(*source_it))
 
   99       new (
const_cast<void*
>(
static_cast<const void*
>(target_it)))
 
  100         value_type(*source_it);
 
  102       _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(PB_DS_V2F(*source_it)));
 
  107   reallocate_metadata((node_update*)
this, new_size);
 
  111     cond_dtor<size_type> cd1(m_a_values, m_end_it, m_size);
 
  114   m_a_values = a_new_values;
 
  116   m_end_it = target_it;
 
  117   update(node_begin(), (node_update*)
this);
 
  118   PB_DS_ASSERT_VALID((*
this))
 
  123 template<typename It>
 
  128   PB_DS_ASSERT_VALID((*
this))
 
  132   PB_DS_CHECK_KEY_EXISTS(PB_DS_V2F(*it))
 
  134 #ifdef PB_DS_REGRESSION 
  135     typename _Alloc::group_adjustor adjust(m_size);
 
  138   _GLIBCXX_DEBUG_ASSERT(m_size > 0);
 
  139   value_vector a_values = s_value_alloc.allocate(m_size - 1);
 
  140   iterator source_it = 
begin();
 
  141   iterator source_end_it = 
end();
 
  142   iterator target_it = a_values;
 
  143   iterator ret_it = 
end();
 
  145   cond_dtor<size_type> cd(a_values, target_it, m_size - 1);
 
  147   _GLIBCXX_DEBUG_ONLY(size_type cnt = 0;)
 
  149   while (source_it != source_end_it)
 
  153       _GLIBCXX_DEBUG_ONLY(++cnt;)
 
  154       _GLIBCXX_DEBUG_ASSERT(cnt != m_size);
 
  155       new (
const_cast<void*
>(
static_cast<const void*
>(target_it)))
 
  156           value_type(*source_it);
 
  165   _GLIBCXX_DEBUG_ASSERT(m_size > 0);
 
  166   reallocate_metadata((node_update*)
this, m_size - 1);
 
  168   _GLIBCXX_DEBUG_ONLY(debug_base::erase_existing(PB_DS_V2F(*it));)
 
  170     cond_dtor<size_type> cd1(m_a_values, m_end_it, m_size);
 
  173   m_a_values = a_values;
 
  175   m_end_it = m_a_values + m_size;
 
  176   update(node_begin(), (node_update*)
this);
 
  177   PB_DS_ASSERT_VALID((*
this))
 
  184 erase(key_const_reference r_key)
 
  186   point_iterator it = find(r_key);
 
auto end(_Container &__cont) -> decltype(__cont.end())
Return an iterator pointing to one past the last element of the container. 
auto begin(_Container &__cont) -> decltype(__cont.begin())
Return an iterator pointing to the first element of the container.