您可以在C++中使用模板(或類似的)來指定在一個函數中完成哪個操作?由操作員填充的模板
我不知道該怎麼解釋得清楚,所以我會告訴你怎麼可能是(但不)在代碼中完成:
template <operator OPERATION> int getMaxOrMin(int a, int b) {
return a OPERATION b ? a : b;
}
哪裏找到最大或最小的a或b。將(這是我的僞語法變得有點混亂,多多包涵):
int max = getMaxOrMin< > > (a, b);
int min = getMaxOrMin< < > (a, b);
我知道這不是如何做到這一點在所有的(因爲它甚至不語法使感覺),但我希望澄清我想要做的事情的類型。
我想知道這是我正在做一個PriorityQueue實現,並且它很好很容易切換後備是一個最大堆或一個小堆在飛行中而無需複製和粘貼代碼兩個不同的類。
我知道我可以用宏做到這一點,但唯一的方法我知道如何做到這一點會給我一個最大堆或最小堆,但不是在同一編譯中。不過,我可能忽略了一種方式。
你可以做一個基類和具有最大堆/最小堆作爲子類,然後讓getMaxorMin功能在基類中是虛擬的,並且在max-heap/min-heap中以不同的方式實現它。 – Grammin 2011-03-22 17:03:42