我有一個節點類的功能如何將std :: pop_heap接受的函數指針設置爲Compare?
static bool HasGreaterF(const Node& a, const Node& b);
static bool HasGreaterF(const std::shared_ptr<Node>& a, const std::shared_ptr<Node>& b);
然後使一個向量作爲堆和想使用第二功能進行比較。這是行不通的,因爲函數指針不能與一個函數匹配。如果我刪除它的第一個功能。如何使它與兩個函數一起工作?
std::vector<std::shared_ptr<Node>> openlist_min_f;
std::pop_heap(openlist_min_f.begin(), openlist_min_f.end(), &Node::HasGreaterF);
C++有時是一個痛苦的屁股。這是否少了字符:'[](const auto&l,const auto&r){return Node :: HasGreaterF(l,r); }'......可能不是。 – David
@大衛好點。 – songyuanyao