這不是一個重複的問題它與此處的不同之處在於比較函數對主類有依賴性。如何在C++中實現STL priority_queue中的這種比較類
我所有的邏輯都屬於一個類。我有一張地圖nodeCnt
,可以查詢getCnt()
。我正在計算如何爲我的優先隊列pq
定製比較myCmp
,該比較將根據地圖進行比較。
以下代碼段不起作用。如reference docs中所述的auto cmp
不能完成,因爲Class不能具有用於比較功能的這種聲明。
Class AllLogic {
private:
std::map<int, int> nodeCnt;
// This is my confusing part
std::priority_queue<int, std::vector<int>, decltype(&myCmp)> pq(&myCmp);
public:
int getCnt(int val) {
if (nodeCnt.find(val) != nodeCnt.end())
return nodeCnt[val];
return 0;
}
bool myCmp(int left, int right) {
return getCnt(left) < getCnt(right);
}
};
Hi @kfsone。這不重複。這與現有的「略有不同」。 – visweshn92
比較函數對主類有依賴性。與您發佈的相關重複鏈接不同。 – visweshn92
不要在stackoverflow中說「不起作用」,而只是描述問題...... – 2016-10-01 21:41:02