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

1.CStringArray类

CStringArray类可以用来存储CString类型的对象,而且它的容量是可以动态增加的。

CStringArray

CObject
CStringArray

CStringArray类支持CString对象数组。
CStringArray的成员函数类似于CObArray类的成员函数。由于具有这些相似性,你可以参考关于CObArray的参考文件来获取CStringArray成员函数的详细说明。如果在说明中看到某一函数的返回值是一个指向CObject对象的指针,则可以用一个CString(而不是一个CString指针)来代替它。如果看到某一函数的参数是一个指向CObject的指针,则可以用LPCTSTR来代替它。
例如,可以将
CObject* CObArray::GetAt( int <nIndex> ) const;
转换为
CString CStringArray::GetAt( int <nIndex> ) const;
和将
void SetAt( int <nIndex>, CObject* <newElement> )
转换为
void SetAt( int <nIndex>, LPCTSTR <newElement> );
CStringArray与IMPLEMENT_SERIAL宏联合起来支持其元素的连续和转储。如果一个CString对象数组被用一个重载的插入操作符或Serialize成员函数保存到一个存档中,则它的每一个元素都按顺序连续。
注意:
在使用一个数组之前,使用SetSize来建立它的大小并给它分配内存。如果你不使用SetSize,则向数组中添加元素将导致数组被频繁地拷贝和分配内存。频繁分配内存和拷贝会导致效率低和内存零碎。

如果你需要数组中个别字符串元素的转储,则应该将转储环境的深度设置为1或更大。当一个CString数组被删除时,或当其中的个别元素被删除时,字符串内存被根据需要释放。
有关使用CStringArray的更多信息,参见“Visual C++程序员指南”中的文章“集合”。
#include <afxcoll.h>

CStringArray类成员

构造
CStringArray 构造一个空的CString对象数组

绑定
GetSize 获取这个数组中的元素数目
SetSize 设置这个数组中包含的元素数目
GetUpperBound 返回最大的有效索引

操作符
FreeExtra 释放当前数组边界之外的未使用的所有内存
RemoveAll 从数组中删除所有元素

元素访问
GetAt 返回位于给定索引处的值
SetAt 设置给定索引处的元素的值;不得将数组增大
ElementAt 返回对数组中的某一元素指针的临时引用
GetData 对数组中的元素允许的访问。可以是NULL

扩大数组
SetAtGrow 设置给定索引处的值,如果必要的话可以增长数组
Add 在数组的末尾添加一个元素;可根据需要增长数组
Append 向数组中添加另一个数组;如果必要的话可增长数组
Copy 将另一个数组拷贝到此数组中;如果必要的话可增长数组

插入/删除
InsertAt 在指定索引处插入一个元素(或者是另一个数组中的所有元素)
RemoveAt 删除指定索引处的一个元素

操作符
operator [] 设置或获取在指定索引处的元素

 

 

2.CPtrArray类

CPtrArray类支持void类型的指针数组,该类的成员函数与CObArray类相应的函数类似,只是CObArray类的成员函数中使用CObject指针作为参数或返回值类型的地方,在CPtrArray类中都用void类型的指针代替

CPtrArray

 

CObject
└CPtrArray

 

  CPtrArray类支持void指针数组。
  CPtrArray的成员函数类似于CObArray类的成员函数。由于这种相似,你可以利用CObArray参考文档作为成员函数的说明。无论在何处使用一个CObject指针作为函数参数或返回值,都可以将它替换成void。例如:
  CObject* CObArray::GetAt( int <nIndex> ) const;
  可以转换成:
  void* CPtrArray::GetAt( int <nIndex> ) const;
  CPtrArray嵌入IMPLEMENT_DYNAMIC宏来支持运行时类型访问和转储到一个CDumpContext对象。如果你需要转储个别的指针数组元素,你必须将转储环境的深度设置为1或更大。
  注意:
  在使用一个数组之前,先用SetSize函数建立数组的大小,并为数组分配内存。如果应用程序没有使用SetSize函数,则向数组中增加元素会使它被频繁地再分配和拷贝。频繁再分配和拷贝的效率很低,并且可能使内存变得很零碎。
  指针数组不能被串行化。
  当一个指针数组被删除时,或当其元素被删掉时,只删掉指针,而这些指针所引用的实体不被删除。
  #include <afxcoll.h>
  请参阅:CObArray
  CPtrArray类成员
  构造
CPtrArray 构造一个空的void指针数组

  绑定
GetSize 获取这个数组中的元素个数
GetUpperBound 返回最大的有效索引
SetSize 设置此数组中要包含的元素个数

  操作
FreeExtra 释放超出当前上界的所有未用内存
RemoveAll 删除此数组中的所有元素

  元素访问
GetAt 返回给定索引处的值
SetAt 设置给定索引处的值;数组不运行扩展
ElementAt 返回对数组内的一个元素指针的一个临时引用
GetData 允许访问数组中的元素。不能是NULL

  扩大数组
SetAtGrow 设置给定索引处的值,如果必要,允许数组扩展
Add 将一个元素增加到数组尾;在必要时扩展数组
Append 将另一个数组添加到此数组;如果必要,则扩展此数组
Copy 将另一个数组拷贝给此数组;如果必要,则扩展此数组

  插入/删除
InsertAt 将一个元素(或另一数组中的所有元素)插入到指定索引处
RemoveAt 删除指定索引处的元素

  操作符
operator [] 设置或获取给定索引处的元素
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值