我正在尝试创建一个采用优先级队列并反转优先级的类。我包含一个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_类型。您的运营商正在努力将优先队列与该队列中的一个元素进行比较。你应该比较喜欢的东西。 –