Delphi 泛型的使用案例

Delphi 泛型的使用案例

解决问题:如有一组数字,55 68 79 120 130 180 先进行最大两个数的比对,譬如 130 180 比对,取小值,得到130,大的180-130=50, 然后在将50放入剩余的55 68 79 120比对,重复上面的比对要求,如79 120 比对结果41 再和55 68比对,运行直至最后两个的差值。

  • 应用泛型的排序与复制
  • Tarray.Sort
  • Tarray.Copy

需要引用文件

uses Generics.Collections, Generics.Defaults;

代码块

具体代码如下:

var
  i, x: Integer;
  dd, DD1: Tarray<Integer>;//定义两个泛型变量
begin
  dd := [180, 68, 79, 120, 130, 55];//给变量赋值
  x := Length(dd);//取长度以方便计算
  while x > 1 do
  begin
    Tarray.Sort<Integer>(dd);//使用泛型排序
    i := dd[x - 1] - dd[x - 2];//计算两最大数差值
    SetLength(DD1, x - 1);//设置过渡变量长度(这里为了使用泛型copy,否则可以直接使用下面注释代码)
    Tarray.Copy<Integer>(dd, DD1, 0, 0, x - 2);//泛型复制
    DD1[x - 2] := i;//将差值加入到目标数组
    dd := DD1;//改变原数组
{
SetLength(DD, x - 1);
    DD[x - 2] := i;
}
    x := Length(dd);
  end;
end;
发布了20 篇原创文章 · 获赞 29 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/tanqth/article/details/59691103
今日推荐