CList<CRect, CRect&>
是 MFC(Microsoft Foundation Classes)中定義的一個雙向鏈表模板類,用于存儲 CRect
對象。在使用 CList
時,你可以執行多種操作,比如添加、移除、查找和遍歷元素。以下是一些常見的用法示例。
聲明和初始化
首先,我們需要包含必要的頭文件并聲明一個 CList
對象:
#include <afxtempl.h> // 包含 CList 定義的頭文件CList<CRect, CRect&> m_listRect; // 聲明一個存儲 CRect 對象的 CList
添加元素
可以使用 AddTail
或 AddHead
方法將元素添加到鏈表的尾部或頭部。
CRect rect1(0, 0, 100, 100);
CRect rect2(10, 10, 200, 200);m_listRect.AddTail(rect1); // 將 rect1 添加到鏈表尾部
m_listRect.AddHead(rect2); // 將 rect2 添加到鏈表頭部
遍歷元素
使用 GetHeadPosition
和 GetNext
方法遍歷鏈表中的所有元素。
POSITION pos = m_listRect.GetHeadPosition();
while (pos != NULL)
{CRect& rect = m_listRect.GetNext(pos);// 處理 rect 對象
}
獲取元素
可以使用 GetHead
和 GetTail
獲取鏈表的第一個和最后一個元素。
CRect& headRect = m_listRect.GetHead(); // 獲取第一個元素
CRect& tailRect = m_listRect.GetTail(); // 獲取最后一個元素
查找元素
使用 Find
方法查找特定元素,返回值是一個 POSITION
對象。
POSITION pos = m_listRect.Find(rect1);
if (pos != NULL)
{// 找到了 rect1CRect& foundRect = m_listRect.GetAt(pos);
}
刪除元素
可以使用 RemoveAt
、RemoveHead
和 RemoveTail
方法刪除元素。
m_listRect.RemoveHead(); // 刪除第一個元素
m_listRect.RemoveTail(); // 刪除最后一個元素// 使用 Find 方法找到元素并刪除
POSITION pos = m_listRect.Find(rect1);
if (pos != NULL)
{m_listRect.RemoveAt(pos); // 刪除找到的元素
}
獲取元素數量
使用 GetCount
方法獲取鏈表中元素的數量。
int count = m_listRect.GetCount(); // 獲取元素數量
示例代碼
下面是一個完整的示例代碼,展示了 CList<CRect, CRect&>
的基本用法:
#include <afxwin.h> // MFC 核心和標準組件
#include <afxtempl.h> // MFC 模板類void ExampleCListUsage()
{// 聲明 CList 對象CList<CRect, CRect&> m_listRect;// 添加元素CRect rect1(0, 0, 100, 100);CRect rect2(10, 10, 200, 200);m_listRect.AddTail(rect1);m_listRect.AddHead(rect2);// 遍歷元素POSITION pos = m_listRect.GetHeadPosition();while (pos != NULL){CRect& rect = m_listRect.GetNext(pos);// 處理 rect 對象}// 獲取元素CRect& headRect = m_listRect.GetHead();CRect& tailRect = m_listRect.GetTail();// 查找并刪除元素pos = m_listRect.Find(rect1);if (pos != NULL){m_listRect.RemoveAt(pos);}// 獲取元素數量int count = m_listRect.GetCount();
}
這段代碼展示了如何聲明、初始化、添加、遍歷、獲取、查找和刪除 CList
中的元素。希望這些示例對你有幫助。如果你有任何其他問題,請告訴我!