Есть ли в Pascal аналог шаблонов из C++ - Free Pascal
Формулировка задачи:
Есть ли в Pascal аналог Шаблонов из С++? Если да, то как, например, реализовать такую процедуру:
Листинг программы
- template< typename T >
- void sort( T array[], int size )
- {
- T t;
- for (int i = 0; i < size - 1; i++)
- for (int j = size - 1; j > i; j--)
- if (array[j] < array[j-1])
- {
- t = array[j];
- array[j] = array[j-1];
- array[j-1] = t;
- }
- }
Решение задачи: «Есть ли в Pascal аналог шаблонов из C++»
textual
Листинг программы
- {$mode objfpc}
- type
- rec = record
- A, B: integer;
- end;
- generic Swapper<T> =
- class
- type public
- class procedure swap(var A, B: T); inline;
- end;
- iSwapper = specialize Swapper<integer>;
- fSwapper = specialize Swapper<double>;
- rSwapper = specialize Swapper<rec>;
- class procedure Swapper.swap(var A, B: T);
- var C: T;
- begin
- C := A; A := B; B := C;
- end;
- var
- i1, i2: integer;
- f1, f2: double;
- r1, r2: rec;
- begin
- i1 := 4; i2 := 7;
- writeln(i1, ' <-> ', i2);
- iSwapper.swap(i1, i2);
- writeln(i1, ' ', i2);
- f1 := 2.4; f2 := 5.7;
- writeln(f1:0:2, ' <-> ', f2:0:2);
- fSwapper.swap(f1, f2);
- writeln(f1:0:2, ' ', f2:0:2);
- r1.A := 10; r1.B := 20;
- r2.A := 40; r2.B := 76;
- rSwapper.swap(r1, r2);
- // тоже можешь напечатать содержимое записей, чтобы убедиться, что Swap работает...
- end.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д