首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

Delphi TList 物件指標清單類別完整操作指南

     編輯:關於C++

TList 類別概述

TList 繼承自 TObject,用於儲存與管理**物件指標**的動態陣列。提供新增、刪除、排序、搜尋、重排等完整操作介面。

核心屬性

屬性說明
Capacity內部指標陣列配置大小(≥ Count),預先設定可減少重新配置
Count目前實際使用的項目數
Items[Index]存取指定索引的物件指標(唯讀/寫)
List直接取得內部指標陣列(PPointerList)

Capacity vs Count 關鍵差異

  • Capacity:已配置記憶體可容納的指標數
  • Count:實際使用的項目數
  • Capacity >= Count 恆成立
  • 大量新增前設定 Capacity := Count 可顯著提升效能

核心方法完整對照

方法功能備註
Add(Item)尾端新增項目,回傳索引自動擴充 Capacity
Clear移除所有項目,Count=0,Capacity=0釋放內部陣列記憶體
Delete(Index)刪除指定索引項目後續項目前移,Count--
Exchange(Index1, Index2)交換兩項目位置
Expand依規則擴充 CapacityCount=Capacity 時觸發
First回傳 Items[0]空清單回傳 nil
IndexOf(Item)搜尋項目索引找不到回傳 -1
Insert(Index, Item)指定位置插入必要時擴充 Capacity
Last回傳 Items[Count-1]
Move(CurIndex, NewIndex)移動項目位置
Pack移除所有 nil 指標Count 變為實際物件數
Remove(Item)移除首個匹配項目回傳原索引,Count--
Sort(CompareFunc)快速排序需提供比較函數

排序比較函數規範

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

// 回傳值規則:
// Item1 < Item2  -> 負值
// Item1 = Item2  -> 0
// Item1 > Item2  -> 正值

實用程式碼範例

預先配置 Capacity 提升大量新增效能

List.Clear;
List.Capacity := ExpectedCount;
for i := 0 to ExpectedCount - 1 do
  List.Add(CreateItem(i));

安全遍歷與釋放物件

for i := List.Count - 1 downto 0 do begin
  TMyObject(List.Items[i]).Free;
  List.Delete(i);
end;
// 或使用 Pack 後再釋放

自訂排序範例

function CompareByName(Item1, Item2: Pointer): Integer;
begin
  Result := AnsiCompareStr(TMyObject(Item1).Name, TMyObject(Item2).Name);
end;

List.Sort(@CompareByName);

記憶體管理注意事項

  • TList **不擁有**所指向的物件,Clear/Delete/Remove 僅移除指標,**不釋放物件本身**
  • 銷毀 TList 實例前,必須手動釋放所有內含物件
  • Pack 移除 nil 指標但不釋放記憶體,需配合 Capacity := Count 回收

建構與解構

  • 建立:List := TList.Create(勿直接呼叫建構函式,用 new/Create)
  • 銷毀:List.Free(會呼叫 ~TList 釋放內部陣列記憶體)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved