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
类型。
nIndex
在
0
和数组上限之间的值。
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
。如果之前使用
SetSize
是
nGrowBy
大于
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
位置插入
nCount
个
newElement
数组元素或者
pNewArray
数组。
void RemoveAt(int nIndex , int nCount = 1);
从指定的
nIndex
位置开始,删除
nCount
个数组元素,所有元素下移,并且减少数组的上限,但不释放内存。