我有一个问题,我希望你知道答案。我有一个通用的堆类。让我们叫它CHeap。在本课中,由于堆的性质,我需要比较组件(例如Heap[i]>Heap[j]
)。这里堆是阵列。如何重载operator>在main.cpp中的泛型类
如果我在的main.cpp这样定义一个变量:
cHeap <int> myHeap;
然后我没有问题。但是,如果我有一个数据结构,让我们说:
struct S{
int data;
int code;
}
和我定义:
cHeap <S> myHeap;
然后我有问题。例如,我想要比较代码值。换句话说:Heap[i].code>Heap[j].code
但是,正如我之前所说的,这是一个通用类,我不希望有一个在我的代码(在我便宜类)。反正是有,我可以超载运营商>为便宜我的main.cpp? 换句话说有:
bool operator>(const S& s1, const s& s2){
return s1.code > s2.code;
}
我
的main.cpp
,并将其链接到便宜类?
喜欢的东西,当我们使用STL的* priority_queue *我们做什么:
priority_queue <S, vector <S>, greater <S> > myPQ;
bool operator>(const S& s1, const s& s2){
return s1.code > s2.code;
}
?!
感谢
为什么它必须位于main.cpp文件中?你提出的问题是什么?还有什么意思*链接*的东西到一个类? – Shoe
@Jefffrey:因为如上所述,CHeap是一个通用类。关于链接,我可能使用了错误的词。我的意思是像我们在priority_queues中所做的一样。这就是为什么我最后写了它来澄清我在找什么。如果你知道一个更好的词,请让我知道:-) – Nejla
我问了3个问题,你回答了一个,我甚至不知道你回答了哪一个。 – Shoe