On 25 September 2016 at 17:07, degski <degski@gmail.com> wrote:What criteria should I use to choose a specific Boost.Heap implementation (skew, fibonacci etc), from the ones provided by the Boost.Heap library?Well, as no answer, wrote my own:
#define BV_NOEXCEPT noexcept
#define BV_CONST_NOEXCEPT const noexcept
template < typename T >
class priority_queue {
private:
typedef std::vector < T > Data;
public:
typedef typename Data::iterator iterator;
typedef typename Data::const_iterator const_iterator;
private:
Data m_data;
public:
priority_queue ( ) BV_NOEXCEPT {
m_data.reserve ( 16 );
}
iterator begin ( ) BV_NOEXCEPT {
return m_data.begin ( );
}
const_iterator begin ( ) BV_CONST_NOEXCEPT {
return m_data.begin ( );
}
iterator end ( ) BV_NOEXCEPT {
return m_data.end ( );
}
const_iterator end ( ) BV_CONST_NOEXCEPT {
return m_data.end ( );
}
void push ( const T & t_ ) BV_NOEXCEPT {
const const_iterator i = std::lower_bound ( m_data.begin ( ), m_data.end ( ), t_, std::greater < T > ( ) );
if ( i == m_data.end ( ) or std::greater < T > ( ) ( t_, * i ) ) {
m_data.insert ( i, t_ );
}
}
inline void pop ( ) BV_NOEXCEPT {
if ( m_data.size ( ) ) {
m_data.pop_back ( );
}
}
inline T top ( ) BV_CONST_NOEXCEPT {
return m_data.back ( );
}
inline size_t size ( ) BV_CONST_NOEXCEPT {
return m_data.size ( );
}
inline bool empty ( ) BV_CONST_NOEXCEPT {
return m_data.empty ( );
}
};Have a good day,degski
_______________________________________________
Boost-users mailing list
Boost-users@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost- users