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