Is er een makkelijke manier om een min heap te maken in C++?

Ik ben erg nieuw in C++ en ik vroeg me af of er een manier was om een min-heap in C++ te maken vanuit de standaardbibliotheek.


Antwoord 1, autoriteit 100%

Gebruik make_heap()en vrienden, gedefinieerd in <algorithm>, of gebruik priority_queue, gedefinieerd in <queue>. De priority_queuegebruikt make_heapen vrienden eronder.

#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;
}

Antwoord 2, autoriteit 9%

U kunt std::make_heap, std::push_heapen anderen rechtstreeks gebruiken, of u kunt een std::priority_queuegebruiken gebouwd op een std::vectorof iets dergelijks.

De std::*_heap-methoden bevinden zich in <algorithm>en de sjabloon std::priority_queuebevindt zich in <queue>.

Other episodes