节点优先级队列
Priority Queue of Nodes
我已经创建了一个节点优先级队列,我已经将节点"推"到队列中,假设它将按照整数值的顺序对节点进行排序。我想我错了。节点有属性,int freq和char c.我希望它按照int的顺序排序,从最小到最大。
priority_queue<Node*> Q;
for(i =0; i< 95; i++){
Q.push(node_array[i]);
}
for(i =0; i< 95; i++){
cout<< Q.top() << endl;
Q.pop();
}
我怎样才能使它按照"频率"的顺序排序?
你的priority_queue比较是比较指针,即内存地址。您需要提供一个节点比较二元函子,它接受两个Node*
并实现所需的逻辑:
struct node_cmp
{
bool operator()( const Node* a, const Node* b ) const
{
return a->someField < b->someField;
}
};
使用它实例化优先级队列:
std::priority_queue<Node*, std::vector<Node*>, node_cmp> Q;
相关文章:
- C++优先级队列,按对象的唯一指针的特定方法升序排列
- 按对象的特定方法按升序排列的C++优先级队列
- 使用2个键的cpp-stl::优先级队列排序不正确
- 为什么我需要C++中不同的排序格式来对这个USACO代码上的数组和优先级队列进行排序
- 打印优先级队列
- 带自定义比较器的最小优先级队列
- 优先级队列自定义比较器
- 排序数组优先级队列
- 更改运行时优先级队列的排序功能
- 优先级队列构造函数的工作
- 实现优先级队列
- 优先级队列功能比较
- 在C++中打印对的优先级队列的所有值时出现问题
- 使用堆的优先级队列,具有相同键的值不遵循 FIFO(先进先出)
- 为什么某些 STL 容器(堆栈、队列、优先级队列)不支持迭代器?
- 是否可以使用简单队列创建优先级队列
- 如何在 c++ 中创建对的优先级队列.这会弹出具有最小值的元素.默认的弹出最大值
- Cython中带有自定义比较器的优先级队列
- 优先级队列比较器[C++].
- asio::io_service 具有多个线程的优先级队列处理