Is there an easy way to make a min heap in C++?

后端 未结 2 415
长发绾君心
长发绾君心 2020-12-14 02:43

I\'m very new to C++, and I was wondering if there was a way to make a min heap in C++ from the standard library.

相关标签:
2条回答
  • 2020-12-14 03:15

    Use make_heap() and friends, defined in <algorithm>, or use priority_queue, defined in <queue>. The priority_queue uses make_heap and friends underneath.

    #include <queue> // functional,iostream,ctime,cstdlib
    using namespace std;
    
    int main(int argc, char* argv[])
    {
        srand(time(0));
        priority_queue<int,vector<int>,greater<int> > q;
        for( int i = 0; i != 10; ++i ) q.push(rand()%10);
        cout << "Min-heap, popped one by one: ";
        while( ! q.empty() ) {
            cout << q.top() << ' ';  // 0 3 3 3 4 5 5 6 8 9
            q.pop();
        }
        cout << endl;
        return 0;
    }
    
    0 讨论(0)
  • 2020-12-14 03:37

    You can use std::make_heap, std::push_heap, and others directly, or you can use a std::priority_queue built on a std::vector or similar.

    The std::*_heap methods are in <algorithm>, and the std::priority_queue template is in <queue>.

    0 讨论(0)
提交回复
热议问题