Collections и предназначен для оказания помощи программистам при решении задач упорядочивания элементов массива по возрастанию значений и поиску данных в массиве.
type TArray = class private
class procedure Quicksort<T>(var Values: array of Theorist Comparer: IComparer<T>; L, R: Integer);
public
class procedure Sort<T>(var Values: array of T); overload;
//другие версии процедуры сортировки Sort<T>
class function BinarySearch<T>(const Values: array of T; const Item: T; out Foundlndex: Integer; const Comparer: IComparer<T>;Index,
Count: Integer): Boolean; overload;
//другие версии процедуры бинарного поиска BinarySearch<T> end;
Обратите внимание на то, что класс не предназначен для хранения данных, для этого у него нет ни одного поля. Зато в распоряжении ТАггау имеются две группы одноименных методов-шаблонов. Методы sort<T>() позволяют сортировать данные В массивах любого простого типа, а методы BinarySearch<T> () найдут в упорядоченном массиве индекс ячейки с заданным элементом. Все процедуры и функции объявлены в качестве методов класса (напомню, что об этом можно судить по слову class вначале объявления метода), а это означает, что методы подлежат вызову без создания экземпляра класса.
Воспользуемся услугами класса TArrayo для упорядочивания значений в трех разнотипных массивах (листинг 3.9). Для этого задействуем его метод sort<T> ().
program Т Array Demo;
{$APPTYPE CONSOLE}
uses System.SysUtils,System.Math, Generics.Collections; const Size=10; //размер массивов
var A:Array[0..Size] of Integer; //объявляем массивы B:Array[0.,Size] of Real;
С:Array[0..Size] of AnsiChar; i:Word;
begin
Randomize; //инициализируемгенератор псевдослучайных чисел for i:=0 to Size do {заполним массивы случайными значениями} begin
А[i]:=Random(100); II генерируем целое число
В[i]:=Random(100)/RandomRange(1,100);//генерируем действительное число
С[i]:=AnsiChar(RandomRange(33,255));//генерируем символ end;
TArray.Sort<integer>(A) ; //упорядочим значения в массивах
TArray.Sprt<Real>(В);
TArray.Sort<AnsiChar>(С);
for i := 0 to Size do //проверим результат сортировкиbegin
Write (,A[l,i,,] = f/#9,A[i],#9);
Write ('B[\i, ' ] = ', #9, В [i], #9) ;
Write(*C[1,i,1]= ',#9,С[i],#9);
WriteLn;
end;
ReadLn;
end.