CArray类学习

 
CArray类学习
2007-7-27
CArray类的申明保存在头文件afxtempl.h中。CArray类继承于CObject类。
在使用一个数组前,使用SetSize来建立数组的大小和为它分配内存,如果不使用SetSize,则为数组添加元素就会引起频繁的分配内存和拷贝,容易导致内存碎片。
构造函数:
CArray();
构造一个空数组,数组一次可扩充一个元素。
 
属性函数:
int GetSize() const;
返回数组的大小,索引是基于0,所以索引的长度比数组大小小1
 
int GetUpperBound() const;
返回数组上限,比数组长度小1
 
void SetSize(int nNewSize , int nGrowBy = -1);
throw(CMemoryException);
建立一个空的或者已存在数组的大小,如有必要分配内存。如果数组新定义的大小小于原来的大小,则数组内容会被截断,并释放内存。
 
操作函数:
void FreeExtra();
释放数组扩展时分配的额外的内存空间,但是不影响数组的大小和上界,因为是CArray对象,所以有记录数组大小和上限的成员变量信息,而实际在使用数组时并没有申请那么多的内存空间。
 
void RemoveAll();
从数组中移除所有的元素,如果数组为空,该函数也起作用。
 
元素访问函数:
TYPE GetAt(int nIndex) const;
获得nIndex索引位置上的数组元素值,返回为TYPE类型。nIndex0和数组上限之间的值。
 
void SetAt(int nIndex , ARG_TYPE newElement);
nIndex位置设定新的newElement值。该函数不能在数组中添加元素,只能修改。
 
TYPE& ElementAt(int nIndex);
返回nIndex位置数据元素的参考
 
const TYPE *GetData() const;
返回指向当前数组元素的指针。使用此函数获得当前数组元素的直接访问能力。如果元素无效则返回null
 
增加数组长度函数:
void SetAtGrow(int nIndex , ARG_TYPE newElement);
nIndex位置设置数组元素newElement。如果必要数组自动增长。
 
int Add(ARG_TYPE newElement);
在数组的末尾增加一个数组元素,数组长度加1。如果之前使用SetSizenGrowBy大于1,则内存按照nGrowBy增加。函数返回newElement的数组元素索引。
 
int Append(const CArray& src);
将同类型的一个数组A附加到本数组的尾部,返回A第一数组元素在本数组的索引。
 
void Copy(const CArray& src);
src元素拷贝到本数组对象中。
 
void InsertAt(int nIndex , ARG_TYPE newElement , int nCount = 1);
throw(CMemoryException);
void InsertAt(int nStartIndex , CArray* pNewArray);
throw(CMemoryException);
在指定的nIndex或者nStartIndex位置插入nCountnewElement数组元素或者pNewArray数组。
 
void RemoveAt(int nIndex , int nCount = 1);
从指定的nIndex位置开始,删除nCount个数组元素,所有元素下移,并且减少数组的上限,但不释放内存。
 
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值