Step 7 (S-11685)

From Stepik Wiki
Jump to: navigation, search

Step on Stepik: https://stepik.org/lesson/564/step/7

Шаблоны помогают преодолеть различие между объектами и функциями. Можно добавить в функции sort дополнительный параметр, который задаёт отношение меньше:

template<class T, class Comp>void sort(T * p, T * q, Comp less);


В качестве третьего параметра в эту функцию Вы можете передать как функцию (на самом деле при этом будет передан указатель на функцию), так и объект класса с перегруженным оператором  "()". И при этом вам не нужно знать его конкретный тип, важно лишь то, что его использование синтаксически похоже на вызов функции.

int m[10] = {0,1,2,3,4,5,6,7,8,9};sort(m, m + 10, Less()); // передаём объект типа Lesssort(m, m + 10, less);   // передаём функцию less с предыдущего степа