#define MAX(A,B) ((A) > (B)) ? (A) : (B)
Przykładowe użycie MAX(a,b) zastąpione zostanie napisem: ((a) > (b)) ? (a) : (b). Można też używać jednoargumentowego operatora #, który spowoduje umieszczenie argumentu w cudzysłowiu oraz dwuargumentowego operatora ##, który konkatenuje (skleja) dwa łańcuchy.
template < class T >
T max(T x, T y)
{
return (x > y) ? x : y;
};
W tym przykładzie parametrami funkcji max są nie tylko
zmienne a i b, ale również ich typ T.
Mówimy tu o wzorcu funkcji, jako że na podstawie tego wzorca
kompilator wygeneruje tyle funkcji ile tylko sobie zażyczymy
podstawiając za T różne typy.
Przeanalizuj przykład: wzorce.cpp
i odpowiedz na pytanie jakie zalety i wady
ma korzystanie z wzorców w stosunku do makr.
Napisz makro, (wzorzec funkcji) wyznaczającej minimum, (maksimum) z trzech, (czterech liczb).
Napisz makro, (wzorzec funkcji) wyznaczającej minimum, (maksimum) z tablicy o n elementach.
Podobnie jak poprzednie dla zadań z tablicami, które już pojawiły się na zajęciach: odbijanie tablic, liczenie statystyk, przesuwanie elementów,sklejanie itp.