ВУЗ:
Составители:
Рубрика:
10
размер и емкость. Если емкость меньше размера, то она устанавливается равной
размеру, а если размер равен 0, то емкость полагается равной 4 элементам. Второй
конструктор с одним параметром создает динамический массив с емкостью, рав-
ной размеру. Он предназначен для массивов, для которых маловероятно дальней-
шее увеличение размера. Наконец, третий конструктор (без параметров)
создает
динамический массив с нулевым размером. Предполагается, что размер такого
массива станет известен далее при выполнении программы.
Следует обратить внимание, что во втором конструкторе первый конструктор
вызывается как обычная процедура. Здесь проявляется двойственная природа
конструктора: при конструировании объекта он вызывается как функция, возвра-
щающая сконструированный объект, а если объект создан, то
конструктор может
быть вызван как обычная процедура для выполнения инициализации полей объ-
екта.
В методах Resize и TrimToSize под содержимое массива выделяется но-
вая память, и старое содержимое копируется в нее при помощи стандартной про-
цедуры Move.
Помимо указанного набора методов, в класс DynArray уместно также
включить следующие методы:
function ToString: AnsiString;
function IndexOf(x: DataType): integer;
function LastIndexOf(x: DataType): integer;
procedure Sort;
procedure Reverse;
procedure ForEach(p: Proc);
Функция ToString преобразует содержимое массива к строковому представле-
нию. Функции IndexOf и LastIndexOf возвращают соответственно индекс
первого и последнего элемента, равного x, а если элемент не найден, то возвраща-
ется -1. Процедура Sort сортирует элементы массива по возрастанию, используя
для сравнения операцию <, процедура Reverse обращает элементы
массива.
Процедура ForEach применяет к каждому элементу массива процедуру p типа
Proc=procedure (var elem: DataType).
Для числовых типов можно также добавить методы, вычисляющие сумму и
среднее:
function Sum: DataType;
function Average: real;
1.3 Свойства классов
Страницы
- « первая
- ‹ предыдущая
- …
- 6
- 7
- 8
- 9
- 10
- …
- следующая ›
- последняя »