日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MFC提供的集合类CStringArray类和CPtrArray类

發(fā)布時間:2025/3/21 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MFC提供的集合类CStringArray类和CPtrArray类 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.CStringArray類

CStringArray類可以用來存儲CString類型的對象,而且它的容量是可以動態(tài)增加的。

CStringArray
?

CObject
└CStringArray


CStringArray類支持CString對象數(shù)組。
CStringArray的成員函數(shù)類似于CObArray類的成員函數(shù)。由于具有這些相似性,你可以參考關(guān)于CObArray的參考文件來獲取CStringArray成員函數(shù)的詳細說明。如果在說明中看到某一函數(shù)的返回值是一個指向CObject對象的指針,則可以用一個CString(而不是一個CString指針)來代替它。如果看到某一函數(shù)的參數(shù)是一個指向CObject的指針,則可以用LPCTSTR來代替它。
例如,可以將
CObject* CObArray::GetAt( int <nIndex> ) const;
轉(zhuǎn)換為
CString CStringArray::GetAt( int <nIndex> ) const;
和將
void SetAt( int <nIndex>, CObject* <newElement> )
轉(zhuǎn)換為
void SetAt( int <nIndex>, LPCTSTR <newElement> );
CStringArray與IMPLEMENT_SERIAL宏聯(lián)合起來支持其元素的連續(xù)和轉(zhuǎn)儲。如果一個CString對象數(shù)組被用一個重載的插入操作符或Serialize成員函數(shù)保存到一個存檔中,則它的每一個元素都按順序連續(xù)。
注意:
在使用一個數(shù)組之前,使用SetSize來建立它的大小并給它分配內(nèi)存。如果你不使用SetSize,則向數(shù)組中添加元素將導(dǎo)致數(shù)組被頻繁地拷貝和分配內(nèi)存。頻繁分配內(nèi)存和拷貝會導(dǎo)致效率低和內(nèi)存零碎。

如果你需要數(shù)組中個別字符串元素的轉(zhuǎn)儲,則應(yīng)該將轉(zhuǎn)儲環(huán)境的深度設(shè)置為1或更大。當一個CString數(shù)組被刪除時,或當其中的個別元素被刪除時,字符串內(nèi)存被根據(jù)需要釋放。
有關(guān)使用CStringArray的更多信息,參見“Visual C++程序員指南”中的文章“集合”。
#include <afxcoll.h>

CStringArray類成員

構(gòu)造

CStringArray構(gòu)造一個空的CString對象數(shù)組


綁定

GetSize獲取這個數(shù)組中的元素數(shù)目
SetSize設(shè)置這個數(shù)組中包含的元素數(shù)目
GetUpperBound返回最大的有效索引


操作符

FreeExtra釋放當前數(shù)組邊界之外的未使用的所有內(nèi)存
RemoveAll從數(shù)組中刪除所有元素


元素訪問

GetAt返回位于給定索引處的值
SetAt設(shè)置給定索引處的元素的值;不得將數(shù)組增大
ElementAt返回對數(shù)組中的某一元素指針的臨時引用
GetData對數(shù)組中的元素允許的訪問。可以是NULL


擴大數(shù)組

SetAtGrow設(shè)置給定索引處的值,如果必要的話可以增長數(shù)組
Add在數(shù)組的末尾添加一個元素;可根據(jù)需要增長數(shù)組
Append向數(shù)組中添加另一個數(shù)組;如果必要的話可增長數(shù)組
Copy將另一個數(shù)組拷貝到此數(shù)組中;如果必要的話可增長數(shù)組


插入/刪除

InsertAt在指定索引處插入一個元素(或者是另一個數(shù)組中的所有元素)
RemoveAt刪除指定索引處的一個元素


操作符

operator []設(shè)置或獲取在指定索引處的元素

?

?

2.CPtrArray類

CPtrArray類支持void類型的指針數(shù)組,該類的成員函數(shù)與CObArray類相應(yīng)的函數(shù)類似,只是CObArray類的成員函數(shù)中使用CObject指針作為參數(shù)或返回值類型的地方,在CPtrArray類中都用void類型的指針代替

CPtrArray

?

CObject
└CPtrArray

?

  CPtrArray類支持void指針數(shù)組。
  CPtrArray的成員函數(shù)類似于CObArray類的成員函數(shù)。由于這種相似,你可以利用CObArray參考文檔作為成員函數(shù)的說明。無論在何處使用一個CObject指針作為函數(shù)參數(shù)或返回值,都可以將它替換成void。例如:
  CObject* CObArray::GetAt( int <nIndex> ) const;
  可以轉(zhuǎn)換成:
  void* CPtrArray::GetAt( int <nIndex> ) const;
  CPtrArray嵌入IMPLEMENT_DYNAMIC宏來支持運行時類型訪問和轉(zhuǎn)儲到一個CDumpContext對象。如果你需要轉(zhuǎn)儲個別的指針數(shù)組元素,你必須將轉(zhuǎn)儲環(huán)境的深度設(shè)置為1或更大。
  注意:
  在使用一個數(shù)組之前,先用SetSize函數(shù)建立數(shù)組的大小,并為數(shù)組分配內(nèi)存。如果應(yīng)用程序沒有使用SetSize函數(shù),則向數(shù)組中增加元素會使它被頻繁地再分配和拷貝。頻繁再分配和拷貝的效率很低,并且可能使內(nèi)存變得很零碎。
  指針數(shù)組不能被串行化。
  當一個指針數(shù)組被刪除時,或當其元素被刪掉時,只刪掉指針,而這些指針所引用的實體不被刪除。
  #include <afxcoll.h>
  請參閱:CObArray
  CPtrArray類成員
  構(gòu)造

CPtrArray構(gòu)造一個空的void指針數(shù)組


  綁定

GetSize獲取這個數(shù)組中的元素個數(shù)
GetUpperBound返回最大的有效索引
SetSize設(shè)置此數(shù)組中要包含的元素個數(shù)


  操作

FreeExtra釋放超出當前上界的所有未用內(nèi)存
RemoveAll刪除此數(shù)組中的所有元素


  元素訪問

GetAt返回給定索引處的值
SetAt設(shè)置給定索引處的值;數(shù)組不運行擴展
ElementAt返回對數(shù)組內(nèi)的一個元素指針的一個臨時引用
GetData允許訪問數(shù)組中的元素。不能是NULL


  擴大數(shù)組

SetAtGrow設(shè)置給定索引處的值,如果必要,允許數(shù)組擴展
Add將一個元素增加到數(shù)組尾;在必要時擴展數(shù)組
Append將另一個數(shù)組添加到此數(shù)組;如果必要,則擴展此數(shù)組
Copy將另一個數(shù)組拷貝給此數(shù)組;如果必要,則擴展此數(shù)組


  插入/刪除

InsertAt將一個元素(或另一數(shù)組中的所有元素)插入到指定索引處
RemoveAt刪除指定索引處的元素


  操作符

operator []設(shè)置或獲取給定索引處的元素

總結(jié)

以上是生活随笔為你收集整理的MFC提供的集合类CStringArray类和CPtrArray类的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。