Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Finally. Свойство Items позволяет выполнить обращение к элементу массива через методы чтения- записи для проверки на выход за диапазон

Try

...

aList.Free;

end;

 

Свойство Items позволяет выполнить обращение к элементу массива через методы чтения- записи для проверки на выход за диапазон. Свойство List выполняет прямое обращение без проверки и по скорости доступа выше. Например, для сохранения в объекте aList указателя p под первым порядковым номером следует выполнить обращение:

 

aList.Items[0]:=p;

 

или поскольку свойство Items является свойством по умолчанию:

 

aList[0]:=p;

 

Свойство Count содержит общее число элементов списка. Не все элементы списка содержат фактические указатели, некоторые могут содержать адресный ноль nil. Увеличение значения свойства Count приведет к добавлению в конец списка nil-элементов, а уменьшение – удаление элементов с конца списка. Метод Pack служит для удаления всех nil-элементов из списка и коррекции значения Count.

Свойство Capacity предназначено для управления динамической памятью при добавлении элементов. Чтение свойства позволит определить количество объектов, которые список может хранить без включения механизма перераспределения памяти. Добавление нового элемента приводит к автоматическому увеличению значения емкости. Для повышения быстродействия перед добавлением большого числа «тяжеловесных» объектов желательно предварительно задать свойство Capacity:

 

aList.Clear;

aList.Capacity:=Count;

for i:=1 to Count do List.Add(...);

 

Метод Add добавляет новый элемент, заданным своим указателем, в конец списка и возвращает его порядковый номер (индекс).

 

function Add(Item: Pointer): Integer;

 

Метод Clear удаляет все элементы из списка и устанавливает счетчик Count в 0.

Для удаления элемента из списка, заданного своим порядковым номером, служит метод Delete. После выполнения метода все элементы, следовавшие за удаленным, будут смещены, а значение счетчика уменьшено на единицу. Метод не освобождает память, ассоциированную с удаленным элементом.

 

procedure Delete(Index: Integer);

 

Метод Remove удаляет первый найденный элемент, заданный указателем, и возвращает порядковый номер элемента, предшествовавший удаленному. После выполнения метода все элементы, следовавшие за удаленным, будут смещены, а значение счетчика уменьшено на единицу.

 

function Remove(Item: Pointer): Integer;

 

Метод Extract удаляет элемент списка по указателю.

 

function Extract(Item: Pointer): Pointer;

 

Метод Exchange меняет местами содержимое двух элементов, заданных порядковыми номерами.

 

procedure Exchange(Index1, Index2: Integer);

 

Методы First и Last возвращают первый и последний элементы списка:

 

function First: Pointer;

function Last: Pointer;

 

Метод IndexOf возвращает порядковый номер первого вхождения элемента в список. При отсутствии элемента функция возвращает -1.

 

function IndexOf(Item: Pointer): Integer;

 

Метод Insert помещает элемент в заданную позицию списка. Все элементы, начиная с заданного, смещаются вверх на один.

 

procedure Insert(Index: Integer; Item: Pointer);

 

Метод Move перемещает указатель с первой позиции на вторую.

 

procedure Move(CurIndex, NewIndex: Integer);

 

Метод Sort выполняет сортировку элементов списка в соответствии с функцией сравнения.

 

procedure Sort(Compare: TListSortCompare);

 

Прототип функции следующий:

 

TListSortCompare = function (Item1, Item2: Pointer): Integer;

 

Функция должна возвращать положительное целое, при Item1 < Item2, 0 при равенстве и отрицательное целое при Item1 > Item2.

При уничтожении объекта списка TList память, выделенная под элементы, не освобождается. В таких случаях говорят, что объект не владеет своими данными. В некотором роде это преимущество, поскольку можно быть уверенным в сохранности данных. Однако существует проблема, связанная с ручным освобождением элементов списка. Следующий код удаления некорректен:

 

for i:=0 to aList.Count-1 do

<== предыдущая лекция | следующая лекция ==>
Применение объектов | Статические структуры данных. Ошибка заключается в том, что при очередном удалении элемента уменьшается общее их количество, а верхняя граница переменной цикла остается прежней
Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 255; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.