如何在C 中添加键/优先级
How to add a key/ priority to std::priority_queue in c++?
我正在尝试使用std::priority_queue
实现Dijkstra的探路算法。我的队列是类型Node*
,我需要根据Node
中存储的float gScore
优先级,从最小的GSCORE到最大。我已经阅读了文档,但我仍然不明白如何实现这一目标。有什么想法吗?
我不明白container_type(vector)
的类型含义std::priority_queue<Node*> queue;
我非常感谢任何帮助!
您可以创建一个将超载 ()
class cmp
{
public:
bool operator()(const Node *a, const Node *b) const
{
return (a->gscore) > (b->gscore);
}
};
然后
std::priority_queue<Node*,std::vector<Node*>,cmp);
您将需要一个比较器函数。我认为最好以下面给出的方式实施,而不是为其宣布课程。
auto comp = [] (Node* a,Node* b) -> bool { return a->gscore < b->gscore; };
priority_queue< Node*, std::vector<Node*>, decltype(comp) > foo(comp);
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 如何在C++中从两个单独的for循环中添加两个数组
- POCO::PostgreSQL:如何将std::vector支持添加到`Binder::bind`
- 如何仅为一个函数添加延迟
- 如何防止 c++ 在从浮点型转换为双精度型(不适用于 IO)时添加额外的小数?
- 使用std::transform将一个范围的元素添加到另一个范围中
- C++优先级队列,按对象的唯一指针的特定方法升序排列
- 如何将更多文件夹添加到c++include路径
- 如何将元素添加到数组的线程安全函数?
- QT通过C++添加映射QML项目
- 按对象的特定方法按升序排列的C++优先级队列
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- 使用2个键的cpp-stl::优先级队列排序不正确
- 如何使用重载的相等(==)运算符向测试用例添加描述
- 为什么Mat类的两个对象可以在不重载运算符+的情况下添加
- 如何防止clang格式在流运算符调用之间添加换行符<<
- 为什么我们需要在优先级队列声明中添加一个向量作为参数?
- 是否可以更改在优先级队列中添加具有相同优先级的"side"对象?
- 如何在C 中添加键/优先级
- cmake从子目录中添加了破坏链接/库链接优先级的标志和库