我正在嘗試創建一個採用優先級隊列並反轉優先級的類。我包含一個bool operator<()
函數作爲該類的成員函數,但無論如何構造此函數,運算符似乎都不會被重載。運營商overloader沒有產生影響
這裏是我的類:
template<typename T>
class MinPQ{
public:
bool empty() const {
return pq.empty();
}
unsigned int size() const {
return pq.size();
}
void push(const T& element){
pq.push(element);
}
const T& min() const {
return pq.top();
}
void remove_min(){
pq.pop();
}
bool operator<(const T& element) const {
return pq < element;
}
private:
priority_queue<T> pq;
};
編輯
我也試圖改變重載函數以下,不undertsand這是爲什麼也不工作。
bool operator<(const T& element){
return this < element;
}
您是如何使用操作符的? – TartanLlama
我剛剛開始研究優先級隊列,我認爲如果我要包含一個運算符重載成員函數,每當元素被推入隊列時,優先級隊列會自動按照這個overloader進行排序? – KOB
成員操作符定義將作爲參數(默認情況下)_class_類型。您的運營商正在努力將優先隊列與該隊列中的一個元素進行比較。你應該比較喜歡的東西。 –