集合
Mfc 程式庫提供管理物件群組的集合類別。 這些類別有兩種類型:
從 C++ 樣板建立的集合類別
無法從範本建立的集合類別
注意事項 |
---|
如果您的程式碼已經使用非樣板集合類別,您可以繼續使用它們。如果您撰寫新的型別安全集合類別為您自己的資料型別時,建議您使用較新的樣板式類別。 |
集合形狀
集合類別的特點在於,由 「 形狀 」 和其元素的型別。 圖形是指組織和儲存由集合物件的方式。 MFC 提供三種基本的集合形狀: 列出、 陣列和對應 (也稱為字典)。 您可以挑選的是最適合您特定程式設計問題的集合形狀。
三個提供的集合形狀的每個簡短稍後將說明這個主題。 若要比較的圖案以幫助您決定最適合於您的程式功能,請參閱Recommendations for Choosing a Collection 類別。
List
List 類別會提供排序、 無索引的項目清單,實作為雙向連結串列。 清單有一個 「 前端 」 和 「 尾端 」,以及新增或移除項目從標頭或尾端,或插入或刪除項目的中間,是非常快速。
陣列
陣列類別有提供動態調整大小、 已排序,以及整數索引的陣列的物件。
對應 (也稱為字典)
對應是結合和值物件的索引鍵的物件的集合。
樣板式集合類別
若要實作型別安全集合,包含任何型別的物件最簡單的方法是使用 MFC 樣板式類別的其中一個。 如需這些類別的範例,請參閱 MFC 範例收集。
下表列出了 MFC 樣板式集合類別。
集合樣板類別
集合內容 |
陣列 |
清單 |
對應 |
---|---|---|---|
任何型別之物件的集合 |
CArray |
CList |
CMap |
任何型別之物件的指標集合 |
CTypedPtrArray |
CTypedPtrList |
CTypedPtrMap |
非樣板式集合類別
如果您的應用程式已經使用 MFC 非樣板類別,您可以繼續使用它們。 不過,對於新的集合,我們建議您使用樣板式類別。 下表列出 MFC 集合類別,不以範本為基礎。
非樣板集合類別
陣列 |
清單 |
對應 |
---|---|---|
CObArray |
CObList |
CMapPtrToWord |
CByteArray |
CPtrList |
CMapPtrToPtr |
CDWordArray |
CStringList |
CMapStringToOb |
CPtrArray |
|
CMapStringToPtr |
CStringArray |
|
CMapStringToString |
CWordArray |
|
CMapWordToOb |
CUIntArray |
|
CMapWordToPtr |
MFC 集合類別的特性表中Recommendations for Choosing a Collection 類別說明 MFC 集合類別,這些特性 (而不是圖形) 的角度來看:
該類別是否使用 C++ 樣板
儲存在集合中的項目可以變更進行序列化
是否儲存在集合中的項目可以是診斷傾印
這個集合是否是型別安全