資源描述:
《mfc中數(shù)組類的使用分析》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、MFC中數(shù)組類的使用分析作者:佚名來源:不詳更新時間:2007-3-2516:49:45等級:?MFC的數(shù)組類支持的數(shù)組類似于C++中的常規(guī)數(shù)組,可以存放任何數(shù)據(jù)類型。C++的常規(guī)數(shù)組在使用前必須將其定義成能夠容納所有可能需要的元素,而MFC數(shù)組類創(chuàng)建的對象可以根據(jù)需要動態(tài)地增大或減小,數(shù)組的起始下標(biāo)是0,而上限可以是固定的,也可以隨著元素的增加而增加,數(shù)組在內(nèi)存中的地址仍然是連續(xù)分配的?! FC定義了數(shù)組模板類CArray,并針對各種常用變量類型定義了CByteArray,CWordArray,CUIntArray,CDWordArray,CStringArray,CObArray,CP
2、trArray。詳見下表:數(shù)組類變量類型變量數(shù)值范圍頭文件CArray通過模板類的參數(shù)類型設(shè)定各種類型?Afxtempl.hCByteArray8位無符號整數(shù)BYTE類型0—255Afxcoll.hCWordArray16位無符號整數(shù)WORD類型0—65535Afxcoll.hCDWordArray32位無符號整數(shù)DWORD類型0—4294967295Afxcoll.hCUIntArray32位無符號整數(shù)UINT類型0—4294967295Afxcoll.hCStringArrayCString字符串string字符串?Afxcoll.hCObArrayCObject類及其派生類?Afxco
3、ll.hCPtrArrayvoid*類型指針?Afxcoll.h MFC數(shù)組類使用方法基本相同,下面分別以CArray和CUIntArray為例演示說明數(shù)組類的使用方法。 使用CArray 打開VC++6.0,創(chuàng)建基于對話框的工程Array。CArrayDlg類聲明文件(ArrayDlg.h)中添加語句:#include 請記住:使用CArray一定要包含頭文件afxtempl.h。 打開主對話框資源IDD_ARRAY_DIALOG,添加一個按鈕IDC_ARRAY_CPOINT,標(biāo)題為CArray_CPoint,雙擊該按鈕,在OnArrayCpoint()函
4、數(shù)中添加如下代碼:voidCArrayDlg::OnArrayCpoint(){ CArraym_Array; m_Array.SetSize(10,10); CPointpt1(10,10); m_Array.Add(pt1); CPointpt2(10,50); m_Array.Add(pt2); CPointpt3(10,100); m_Array.Add(pt3); intsize=m_Array.GetSize(); CClientDCdc(this); dc.MoveTo(0,0); CPointpt; for(inti=0;i
5、 { pt=m_Array.GetAt(i); dc.LineTo(pt); }} 代碼簡要說明:CArraym_Array; 該語句定義一個CArray數(shù)組對象,模板類CArray有兩個參數(shù),第一個參數(shù)為數(shù)組元素的類型,該例中是CPoint,即m_Array是CPoint數(shù)組;第二個參數(shù)為引用類型,一般有兩種選擇,一種選擇與第一個參數(shù)類型相同,它意味著數(shù)組對象作為參數(shù)傳遞時,傳遞的是數(shù)組對象。第二種選擇是第一個參數(shù)類型的引用,它意味著數(shù)組對象作為參數(shù)傳遞時,傳遞的是數(shù)組對象的指針。因此,尤其對于較復(fù)雜的數(shù)組結(jié)構(gòu)類型,推薦使用引用傳遞,節(jié)約內(nèi)存同時加快
6、程序運(yùn)行速度,正如本例使用的是CPoint&。m_Array.SetSize(10,10); SetSize函數(shù)設(shè)定數(shù)組的大小,該函數(shù)有兩個參數(shù),第一個參數(shù)設(shè)定數(shù)組的大小;第二個參數(shù)設(shè)定數(shù)組增長時內(nèi)存分配的大小,缺省值是-1,使用缺省值可以保證內(nèi)存分配得更加合理。本例中第二個參數(shù)是10,意即增加一個數(shù)組元素會分配10個元素大小的內(nèi)存供數(shù)組使用?! ∧梢噪S時使用SetSize函數(shù)設(shè)定數(shù)組的大小,如果第一個參數(shù)值小于數(shù)組已有成員數(shù)量,多于第一個參數(shù)值的成員將被截去并釋放相應(yīng)內(nèi)存?! ≡谑褂肅Array數(shù)組前,最好先使用SetSize確定其大小并申請存儲空間。如果不這樣做,向數(shù)組中增加元素時,
7、需要不斷地移動和拷貝元素造成運(yùn)行的低效率和內(nèi)存碎塊。m_Array.Add(pt1); Add函數(shù)添加數(shù)組元素。intsize=m_Array.GetSize(); GetSize返回數(shù)組元素的數(shù)目。for(inti=0;i