Можете ли вы использовать шаблоны (или тому подобное) в 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, и было бы неплохо легко переключаться между поддержкой, являющейся max-heap или min-heap, на лету без копирования и вставки кода, чтобы сделать дваразные классы.
Я знаю, что мог бы сделать это с помощью макроса, но единственный способ, которым я знал бы, как это сделать, - дать мне максимальную кучу или минимальную кучу, но не оба вта же компиляция.Я, наверное, не замечаю пути.