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