Есть ли в 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.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.5 из 5
Похожие ответы