Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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++ 如何更新std::priority_队列中的元素? #包括 #包括 #包括 #包括 #包括 #包括 #包括 #包括 #包括 #包括 #定义pb推回 使用名称空间std; 第二类; 结构节点{ 整数位数; }; 班级比较{ 公众: 布尔运算符()(节点*a,节点*b){ 返回(a->数字)>(b->数字); } }; int main() { 优先级队列pq; 向量向量机; node*p=新节点(); node*q=新节点(); node*r=新节点(); p->数字=100; q->数字=200; r->数字=300; 推力器(p); 推压(q); 推力器(r); q->数字=50; pq.推送(nod); 而(!pq.empty()){ cout_C++_Priority Queue - Fatal编程技术网

C++ 如何更新std::priority_队列中的元素? #包括 #包括 #包括 #包括 #包括 #包括 #包括 #包括 #包括 #包括 #定义pb推回 使用名称空间std; 第二类; 结构节点{ 整数位数; }; 班级比较{ 公众: 布尔运算符()(节点*a,节点*b){ 返回(a->数字)>(b->数字); } }; int main() { 优先级队列pq; 向量向量机; node*p=新节点(); node*q=新节点(); node*r=新节点(); p->数字=100; q->数字=200; r->数字=300; 推力器(p); 推压(q); 推力器(r); q->数字=50; pq.推送(nod); 而(!pq.empty()){ cout

C++ 如何更新std::priority_队列中的元素? #包括 #包括 #包括 #包括 #包括 #包括 #包括 #包括 #包括 #包括 #定义pb推回 使用名称空间std; 第二类; 结构节点{ 整数位数; }; 班级比较{ 公众: 布尔运算符()(节点*a,节点*b){ 返回(a->数字)>(b->数字); } }; int main() { 优先级队列pq; 向量向量机; node*p=新节点(); node*q=新节点(); node*r=新节点(); p->数字=100; q->数字=200; r->数字=300; 推力器(p); 推压(q); 推力器(r); q->数字=50; pq.推送(nod); 而(!pq.empty()){ cout,c++,priority-queue,C++,Priority Queue,优先级队列旨在使用固定优先级,即在插入时应知道元素优先级,然后保持不变。这就是为什么在将元素推入队列时进行所有比较的原因 如果您想要一个排序后的容器来更改键,请尝试std::multimap。它将允许您删除任何元素并重新平衡自身。将其从begin()遍历到end()将按所需顺序访问节点 不幸的是,您仍然需要删除并插入元素来更改密钥,希望C++17能对此做些什么 #include <iostream> #include <map> #include <string&g

优先级队列旨在使用固定优先级,即在插入时应知道元素优先级,然后保持不变。这就是为什么在将元素推入队列时进行所有比较的原因

如果您想要一个排序后的容器来更改键,请尝试
std::multimap
。它将允许您删除任何元素并重新平衡自身。将其从
begin()
遍历到
end()
将按所需顺序访问
节点

不幸的是,您仍然需要删除并插入元素来更改密钥,希望C++17能对此做些什么

#include <iostream>
#include <map>
#include <string>
#include <vector>
#include <stack>
#include <stdio.h>
#include <list>
#include <string.h>
#include <queue>
#include <algorithm>
#define pb push_back
using namespace std;
typedef pair<int,int> ii;


struct node{
    int digit;
};


class Compare{
public:
    bool operator()(node* a,node* b){
        return (a->digit)>(b->digit);
    }
};


int main()
{
priority_queue<node*,vector<node*>,Compare> pq;
vector<node*> vec;
node* p = new node();
node* q = new node();
node* r = new node();
p->digit=100;
q->digit=200;
r->digit=300;
pq.push(p);
pq.push(q);
pq.push(r);
q->digit=50;
pq.push(nod);
while(!pq.empty()){
    cout<<(pq.top())->digit<<endl;
    pq.pop();
}
return 0;
}