STLdoc
STLdocumentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Types | Public Member Functions | Static Public Attributes | Private Types | Private Attributes | List of all members
__gnu_pbds::detail::resize_policy< _Tp > Class Template Reference

Resize policy for binary heap. More...

#include <ext/pb_ds/detail/binary_heap_/resize_policy.hpp>

Public Types

typedef _Tp size_type
 

Public Member Functions

 resize_policy ()
 
 resize_policy (const resize_policy &other)
 
void swap (resize_policy< _Tp > &)
 
bool resize_needed_for_grow (size_type) const
 
bool resize_needed_for_shrink (size_type) const
 
bool grow_needed (size_type) const
 
bool shrink_needed (size_type) const
 
size_type get_new_size_for_grow () const
 
size_type get_new_size_for_shrink () const
 
size_type get_new_size_for_arbitrary (size_type) const
 
void notify_grow_resize ()
 
void notify_shrink_resize ()
 
void notify_arbitrary (size_type)
 

Static Public Attributes

static const _Tp min_size = 16
 

Private Types

enum  { ratio = 8, factor = 2 }
 

Private Attributes

_Tp m_shrink_size
 Next shrink size. More...
 
_Tp m_grow_size
 Next grow size. More...
 

Detailed Description

template<typename _Tp>
class __gnu_pbds::detail::resize_policy< _Tp >

Resize policy for binary heap.

Member Typedef Documentation

template<typename _Tp>
typedef _Tp __gnu_pbds::detail::resize_policy< _Tp >::size_type

Member Enumeration Documentation

template<typename _Tp>
anonymous enum
private
Enumerator
ratio 
factor 
56  {
57  ratio = 8,
58  factor = 2
59  };
Definition: resize_policy.hpp:57
Definition: resize_policy.hpp:58

Constructor & Destructor Documentation

template<typename _Tp>
__gnu_pbds::detail::resize_policy< _Tp >::resize_policy ( )
inline
73  { PB_DS_ASSERT_VALID((*this)) }
_Tp m_grow_size
Next grow size.
Definition: resize_policy.hpp:65
static const _Tp min_size
Definition: resize_policy.hpp:70
#define PB_DS_ASSERT_VALID(X)
Definition: binary_heap_.hpp:324
_Tp m_shrink_size
Next shrink size.
Definition: resize_policy.hpp:62
template<typename _Tp>
__gnu_pbds::detail::resize_policy< _Tp >::resize_policy ( const resize_policy< _Tp > &  other)
inline
76  : m_shrink_size(other.m_shrink_size), m_grow_size(other.m_grow_size)
77  { PB_DS_ASSERT_VALID((*this)) }
_Tp m_grow_size
Next grow size.
Definition: resize_policy.hpp:65
#define PB_DS_ASSERT_VALID(X)
Definition: binary_heap_.hpp:324
_Tp m_shrink_size
Next shrink size.
Definition: resize_policy.hpp:62

Member Function Documentation

template<typename _Tp >
resize_policy< _Tp >::size_type __gnu_pbds::detail::resize_policy< _Tp >::get_new_size_for_arbitrary ( size_type  size) const
inline
172  {
173  size_type ret = min_size;
174  while (ret < size)
175  ret *= factor;
176  return ret;
177  }
Definition: resize_policy.hpp:58
static const _Tp min_size
Definition: resize_policy.hpp:70
_Tp size_type
Definition: resize_policy.hpp:68
template<typename _Tp >
resize_policy< _Tp >::size_type __gnu_pbds::detail::resize_policy< _Tp >::get_new_size_for_grow ( ) const
inline
157  { return m_grow_size * factor; }
_Tp m_grow_size
Next grow size.
Definition: resize_policy.hpp:65
Definition: resize_policy.hpp:58
template<typename _Tp >
resize_policy< _Tp >::size_type __gnu_pbds::detail::resize_policy< _Tp >::get_new_size_for_shrink ( ) const
inline
163  {
164  const size_type half_size = m_grow_size / factor;
165  return std::max(min_size, half_size);
166  }
_Tp m_grow_size
Next grow size.
Definition: resize_policy.hpp:65
Definition: resize_policy.hpp:58
static const _Tp min_size
Definition: resize_policy.hpp:70
const _Tp & max(const _Tp &__a, const _Tp &__b)
Equivalent to std::max.
Definition: base.h:150
_Tp size_type
Definition: resize_policy.hpp:68
template<typename _Tp>
bool __gnu_pbds::detail::resize_policy< _Tp >::grow_needed ( size_type  ) const
inline
template<typename _Tp >
void __gnu_pbds::detail::resize_policy< _Tp >::notify_arbitrary ( size_type  actual_size)
inline
208  {
209  m_grow_size = actual_size;
211  PB_DS_ASSERT_VALID((*this))
212  }
Definition: resize_policy.hpp:57
_Tp m_grow_size
Next grow size.
Definition: resize_policy.hpp:65
#define PB_DS_ASSERT_VALID(X)
Definition: binary_heap_.hpp:324
_Tp m_shrink_size
Next shrink size.
Definition: resize_policy.hpp:62
template<typename _Tp >
void __gnu_pbds::detail::resize_policy< _Tp >::notify_grow_resize ( )
inline
183  {
184  PB_DS_ASSERT_VALID((*this))
186  m_grow_size *= factor;
188  PB_DS_ASSERT_VALID((*this))
189  }
Definition: resize_policy.hpp:57
_Tp m_grow_size
Next grow size.
Definition: resize_policy.hpp:65
#define _GLIBCXX_DEBUG_ASSERT(_Condition)
Definition: debug.h:61
Definition: resize_policy.hpp:58
static const _Tp min_size
Definition: resize_policy.hpp:70
#define PB_DS_ASSERT_VALID(X)
Definition: binary_heap_.hpp:324
_Tp m_shrink_size
Next shrink size.
Definition: resize_policy.hpp:62
template<typename _Tp >
void __gnu_pbds::detail::resize_policy< _Tp >::notify_shrink_resize ( )
inline
195  {
196  PB_DS_ASSERT_VALID((*this))
198  if (m_shrink_size == 1)
199  m_shrink_size = 0;
200  m_grow_size = std::max(m_grow_size / factor, min_size);
201  PB_DS_ASSERT_VALID((*this))
202  }
_Tp m_grow_size
Next grow size.
Definition: resize_policy.hpp:65
Definition: resize_policy.hpp:58
static const _Tp min_size
Definition: resize_policy.hpp:70
const _Tp & max(const _Tp &__a, const _Tp &__b)
Equivalent to std::max.
Definition: base.h:150
#define PB_DS_ASSERT_VALID(X)
Definition: binary_heap_.hpp:324
_Tp m_shrink_size
Next shrink size.
Definition: resize_policy.hpp:62
template<typename _Tp >
bool __gnu_pbds::detail::resize_policy< _Tp >::resize_needed_for_grow ( size_type  size) const
inline
139  {
141  return size == m_grow_size;
142  }
_Tp m_grow_size
Next grow size.
Definition: resize_policy.hpp:65
#define _GLIBCXX_DEBUG_ASSERT(_Condition)
Definition: debug.h:61
template<typename _Tp >
bool __gnu_pbds::detail::resize_policy< _Tp >::resize_needed_for_shrink ( size_type  size) const
inline
148  {
150  return size == m_shrink_size;
151  }
_Tp m_grow_size
Next grow size.
Definition: resize_policy.hpp:65
#define _GLIBCXX_DEBUG_ASSERT(_Condition)
Definition: debug.h:61
_Tp m_shrink_size
Next shrink size.
Definition: resize_policy.hpp:62
template<typename _Tp>
bool __gnu_pbds::detail::resize_policy< _Tp >::shrink_needed ( size_type  ) const
inline
template<typename _Tp>
void __gnu_pbds::detail::resize_policy< _Tp >::swap ( resize_policy< _Tp > &  other)
inline
130  {
131  std::swap(m_shrink_size, other.m_shrink_size);
132  std::swap(m_grow_size, other.m_grow_size);
133  }
_Tp m_grow_size
Next grow size.
Definition: resize_policy.hpp:65
_Tp m_shrink_size
Next shrink size.
Definition: resize_policy.hpp:62
void swap(exception_ptr &__lhs, exception_ptr &__rhs)
Definition: exception_ptr.h:160

Member Data Documentation

template<typename _Tp>
_Tp __gnu_pbds::detail::resize_policy< _Tp >::m_grow_size
private

Next grow size.

template<typename _Tp>
_Tp __gnu_pbds::detail::resize_policy< _Tp >::m_shrink_size
private

Next shrink size.

template<typename _Tp>
const _Tp __gnu_pbds::detail::resize_policy< _Tp >::min_size = 16
static

The documentation for this class was generated from the following file: