Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有一种简单的方法可以在C++;? 我对C++有很新的认识,我想知道是否有一种方法可以从C++库中生成一个MIN堆。 < p>可以使用 STD::MaxyHeope, STD::PuthHythPox< /Cuff>,或者可以使用 STD::PrimRythyQueLe>/Cudio>,在 STD::vector < /Calp>或类似。_C++_Data Structures_Heap_Min - Fatal编程技术网

有没有一种简单的方法可以在C++;? 我对C++有很新的认识,我想知道是否有一种方法可以从C++库中生成一个MIN堆。 < p>可以使用 STD::MaxyHeope, STD::PuthHythPox< /Cuff>,或者可以使用 STD::PrimRythyQueLe>/Cudio>,在 STD::vector < /Calp>或类似。

有没有一种简单的方法可以在C++;? 我对C++有很新的认识,我想知道是否有一种方法可以从C++库中生成一个MIN堆。 < p>可以使用 STD::MaxyHeope, STD::PuthHythPox< /Cuff>,或者可以使用 STD::PrimRythyQueLe>/Cudio>,在 STD::vector < /Calp>或类似。,c++,data-structures,heap,min,C++,Data Structures,Heap,Min,std::*\u heap方法位于中,而std:::priority\u queue模板位于使用make\u heap()和朋友,在中定义,或者使用中定义的priority\u queue。priority\u队列使用make\u heap和下面的朋友 #include <queue> // functional,iostream,ctime,cstdlib using namespace std; int main(int argc, char* argv[]) { sr

std::*\u heap
方法位于
中,而
std:::priority\u queue
模板位于
使用
make\u heap()
和朋友,在
中定义,或者使用
中定义的
priority\u queue
priority\u队列使用
make\u heap
和下面的朋友

#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;
}
#包括//functional、iostream、ctime、cstdlib
使用名称空间std;
int main(int argc,char*argv[])
{
srand(时间(0));
优先级队列q;
对于(int i=0;i!=10;++i)q.push(rand()%10);

CUTE澄清:<代码> PrimyIyQueLe>代码>是一个操作堆,代码为<代码> PUT>代码>和 POP>代码,可以放在容器中,支持比较。如果我从C++中的PrimRythyQuein中弹出,将得到最小值。iner类型,默认为
vector
。任何支持随机迭代和
push\u back
的容器都足够了。如果说我有优先级队列,我该如何设置队列的排序功能?为了进一步澄清,
priority\u队列
是一个最大堆,如果你想要一个最小堆,你必须使用
std::greater
作为比较。请参见威廉的回答。+1(巧妙地)指出,
优先级队列
是一个最大的堆。你问问题却不接受。这种行为是习惯还是选择?