程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> TList

TList

編輯:關於C++

TList包含對象指針列表。

類關系 TObject

Tlist用於存儲和維護對象列表。TList引入屬隆和方法以執行以下操作:

(1)在列表中增加或刪除對象。

(2)在列表中重排對象。

(3)在列表中定位和獲得對象。

(4)在列表中對對象進行排序。

屬性列表

Capacity 標識TList對象維護的指針數組的大小。

Count 表明在列表中使用的項的數量。

Items 列出對象的引用。

List 標識組成Items的指針數組。

方法列表

~TList 刪除與TList對象有關的內存。

Add 在列表的末尾插入有關的內存。

Clear 從列表中刪除所有項。

Delete 刪除Index參數標識的項。

Error 產生EListError異常。

Exchange 交換Items數組中兩項的位置。

Expand 增加列表的Capacity。

First 返回Items[0]。

IndexOf 返回Items數組中一指針的索引。

Insert 增加一對象至Items數組中。

Last 返回Items[Count-1]。

Move 在Items數組中改變某一項的位置。

Pack 從Items數組中刪除所有的零項。

Remove 從Items數組中刪除Items參數的第一個引用。

Sort 在列表中執行QuickSort。

TList 創建一個新的TList對象。

詳細說明

屬性

TList::Capacity

__property int Capacity = {read=FCapacity,write=SetCapacity,nodefault};

標識TList對象維護的指針數組的大小。

設置Capacity為列表將要包含的指旬數。當當設置Capacity屬性時,如果沒有足夠的內存擴展列表為它的新的大小,將產生EOutOfMemory異常。

在沒有重新分配內存情況下,讀取Capacity可得到列表能包含的對象數。注意不要混淆Capacity和Count屬性;Count屬性為列表中使用的項的數量。Capacity值總是大於或等於Count值。當Capacity大於Count,通過設定Capacity至Count可以回收未使用的內存。當添加一對象至列表,而此列表已被填充到Capacity時,Capacity屬性自動增加。在增加對象之前設置Capacity能減少內存重分配的數量,因此提高了執行效果。例如:

List->Clear();

List->Capacity = Count;

for(int i=0;i<Count;i++) List->add(...);

在for循環之前分配Capacity保證在隨後的每一Add操作不重新分配列表。在調用Add時避免重新分配可以提高執行效果並且保證Add操作不產生異常。

TList:;Count

__property int Count = {read=FCount,write=SetCount,nodefault};

表明在列表中使用的項的數量。

讀取Count可以確定Items數組中項的數量。增加Count的大小將在Items數組的末尾增加必要的零指針的數量;減小Count的大小將從Items數組的末尾刪除必要的零指針的數量。

注意:Count並不總等同於列表中引用的對象的數量。在Items數組中,某些項將包含零指針。如果要刪除零指針並且設置Count為對象引用的項數,則可以調用Pack方法。

TList::Items

__property void* Items[int Index] = {read=Get,write=Put};

列出對象的引用。

使用Items可以獲得數組中指定對象的指針。Index參數標識對象的索引;第一個對象的索引值為0,第二個對象的索引值為1,以此類推。設置Items可以在指定位置改變引用。使用帶有Count屬性的Items可以遍歷列表中的所有對象。

應該注意的是,並不是Items數組中所有的項都需包含對象的索引。有些項可能是零指針。如果要刪除零掼針並且減小Items數組的大小至對象的數量,可以調用Pack方法。

TList::List

typedef void* TPointerLIst[134217727];

typedef TPointerLIst* PPointerList;

__property PPointerList List = {read=FList};

標識組成Items的指針數組。

使用List直接獲得Items數組。

TList::~TList

__fastcall virtual~TList(void);

刪除與TList對象有關的內存。

在應用中不要直接調用~TList。用delete替代。

~TList釋放存儲項列表的內存。注意,~TList並不釋放指向列表元素的內存。

TList::Add

int __fastcall Ad(void* Item);

在列表的末尾插入新項,可以調用Add方法。Add方法返回值為新項的索引值;列表中第一項的索引值為0

如果Items數組使用完列表對象Capacity,則Add方法分配更多的內存。Add增加Count值以反映新指針的增加。注意:即使Items數組包含零指針,Add方法總是在Items數組的末尾插入Items指針。

TList::Clear

DYNAMIC void __fastcall Clear(void);

從列表中刪除所有項。

如果要清空Items數組並且設置Count為0,可以調用Clear方法。Clear方法同時釋放用於存儲Items數組的內存並且設置Capacity為0。

TList::Delete

void __fastcall Delete(int Index);

刪除Index參數標識的項。

如果要從列表指定位置刪除項,可以調用Delete方法。索引從零開始,因此第一項的索引值為0,第二項的索引值為1,以此類推。調用Delete方法向前移動刪除項之後的所有英並減小Count。

如果要刪除一項的索引但並不從列表中刪除該項並且改變Count,可設置Index的Items屬性為零。注意Delete並不釋放的項相關的內存。如果要釋放存儲刪除項的內存,可設置Capacity屬性。

TList::Error

virtual void __fastcall Error(const System::AnsiString Msg,int Data)  {Error(__classid(TList),Msg,Data};

產生EListError異常。

當TList對象出現錯誤時,調用Error產生異常。Error組合Msg參數標識的錯誤消息和Data參數標識的數據植,然後產生EListError異常。調用Error而不是增加一行程序代碼,例如:

throw EListError(MyMsg,iBadValue);

為減少應用程序的代碼量。

TList::Exchange

void __fastcall Exchange(int Index1,int Index2);

交換Items數組中兩項的位置。

如果要交換台Items數組中位於Index1和Index2的項的位置,可以調用Exchange方法。索引從零開始,因此,列表中第一項的索引值為0,第二項的索引值為1,以此類推。

TList::Expand

TList* __fastcall Expand(void);

增加列表的Capacity。

為了在列表增加新項,可以調用Expand以創建更多的空間。如果沒有填充列表至Capacity,Expand一作任何處理。如果Count = Capacity,Expand按如下增加列表的Capacity。如果Capacity值大於8,Expand增加列表的Capacity至16;如果Capacity值大於4,但是小於8,列表的Capacity增加至8,如果Capacity值小於4,列表的Capacity 增加4。

返回值為擴展的列表對象。

TList::First

void* __fastcall First(void);

返回Items[0]。

調用First獲得Items數組中的第一個指針。

TList::IndexOf

int __fastcall IndexOf(void* Item);

TList::Inset

void __fastcall Insert(int Index,void* Item);

返回Items數組中一指針的索引。

調用IndexOf獲得Items數組中一指針的索引。Item參數標識指針。數組中第一項索引值為0,第二項的索引值為1,以此類推。如果項不在列表中,IndexOf返回-1。如果一指針在列表中出現多次,IndexOf返回第一次出現的索引值。

TList::Last

void* __fastcall(void);

增加一對象至Items數組中;Index參數標識該對象的添加位置。

如果要添加Item至Items數組中,可以調用Insert方法。Index參數為基於0的索引,因此,數組中的第一個位置的索引值為0。Insert在指定位置增加項;改變原先處於此位置的項以及後面的所有項。如果必要,Insert擴充列表的Capacity並且設置Items屬性。

TList::Move

void __fastcall Move(int CurIndex,int NewIndex);

返回Items[Count-1]。

如果要在Items數組中得到最後的指針,可以調用Last方法。

TList::Pack

void __fastcall Pack(void);

從Items數組中刪除所有的零項。

調用Pack將所有非零項移至Items數組的前面並且減小Count屬性為實際使用的項的數量。Pack並不釋放存儲零指針的內存。為了釋放通過Pack方法刪除的不使用項所占用的內存,可以設置Capacity屬性為Count的新值。

TList::Remove

int __fastcall Remove(void* Item);

從Items數組中刪除Item參數的第一個引用。

當不知道指定項的索引時,調用Remove從Items數組中刪除指定項。在刪除指定項之前,返回該項的索引。在指定項刪除之後,該項之後的所有項的索引位置提前並且Count減一。應該注意的是,如果Items數組包含指針的多個復制,僅第一個復制被刪除。

TList::Sort

typedef int __fastcall (*TListSortCompare)(void* Item1,void* Item2);

void __fastcall Sort(TListSortCompare Compare);

根據Compare函數的比較,在列表中執行QuickSort。

如果要對Items數組中草藥的項進行排序,可以調用Sort方法。Compare為比較函數,該函數表明項是如何進行排序的。如果Item1小於Item2,則Compare返回值為0;如果Item1大於Item2,則Compare返回值大於0;

TList::TList

__fastcall virtual TList(void);

創建一個新的TList對象。

不要直接調用TList。用new替代。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved