我有一個問題,我希望你知道答案。我有一個通用的堆類。讓我們叫它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