-
2005-09-01
CArray - [MFC]
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
template<class TYPE,class ARG_TYPE>class CArray:public CObject 参数 TYPE 模板参数指定存储在数组中的对象的类型。TYPE是一个由CArray返回的参数。ARG_TYPE 模板参数指定用于访问存储在数组中对象的参数类型。通常是一个对TYPE的参考。ARG_TYPE是一个传递给CArray的参数。 说明 CArray类支持与CArray相似的数组,但是必要时可以动态压缩并扩展。数组索引从0开始。可以决定是固定数组上界还是允许当添加元素时扩展当前的边界。内存对上界是连续地分配空间,甚至一些元素可为空。和CArray一样,CArray索引元素的访问时间是不变的,与数组大小无关。 提示 在使用一个数组之前,使用SetSize建立它的大小和为它分配内存。如果不使用SetSize,则为数组添加元素就会引起频繁地重新分配和拷贝。频繁地重新分配和拷贝不但没有效率,而且导致内存碎片。 如果需要一堆数组中的个别数据,必须设置CDumpContext对象的深度为1或更大。 此类的某成员函数调用全局帮助函数,它必须为CArray的大多数使用而定制。请参阅宏和全局量部分中的“类收集帮助器”。当从一个CArray对象中移去元素时,帮助函数DestructElements被调用。当添加元素时,帮助函数ConstructElements被调用。数组类的派生与列表的派生相似。如果要了解关于使用CArray的更多信息,请参阅联机文档“Visual C++程序员指南”中的“收集”。 #include<afxtempl.h> 请参阅 CObArray,DestructElement,ConstructElements,Collection ClassHelpers CArray类的成员 构造函数 Carray构造一个空数组 属性 GetSize获得此数组中的元素数 GetUpperBound返回最大的有效索引值 SetSize设置包含在此数组中的元素数 操作 FreeExtra释放大于当前上界的未使用的内存 RemoveAll从此数组移去所有元素 元素访问 GetAt返回在给定索引上的值 SetAt设定一个给定索引的值;数组不允许扩展 ElementAt返回一个对数组中元素指针的临时参考 GetData允许对数组中的元素访问。可以为NULL 扩展数组 SetAtGrow为一个给定索引设置值;如果必要,扩展数组 Add在数组的末尾添加元素;如果必要,扩展数组 Append在数组上附加另一个数组;如果必要,扩展数组 Copy把另一个数组拷贝到数组上;如果必要,扩展数组 插入/移去 InsertAt在指定的索引上插入一个元素(或另一个数组中的所有元素) RemoveAt在指定的索引上移去一个元素 运算符 [ ]在特定索引上设置或获取元素 成员函数 CArray::Add int Add(ARG_TYPE newElement); throw(CmemoryException); 返回值 添加元素的索引。 参数 ARG_TYPE 模板参数指定应用数组中元素的参数的类型。 newElement 被加入此数组的元素。 说明 在数组的末尾加入一个新的元素,数组长度加1。如果SetSize已经使用nGrowBy值比1大,则内存按其分配。无论怎样,上界只增长1。 示例 //example for CArray:Add CArray<Cpoint.Cpoint> ptArray; Cpoint pt(10.20); ptArray.Add(pt); //Element 0 ptArray.Add(Cpoint(30,40)); //Element 1 请参阅 CArray:SetAt,CArray::SetAtGrow,CArray::InsertAt,CArray::operator[] CArray::Append int Append(const CArray& src); 返回值 第一个附加元素的索引。 参数 src附加到数组的元素的源。 说明 调用此成员函数将一个数组的内容附加到另一个数组的末尾。数组必须是同一种类型。如果必要,Append将分配更多的内存来存储附加到数组上的元素。 请参阅 CArray::Copy CArray::CArray CArray( ); 返回值 构造一个空数组。数组一次扩展一个元素。 请参阅 CObArray::CObArray CArray::Copy void Copy(const CArray& src); 参数 Src被拷贝到数组中的元素的源。 说明 使用此成员函数将一个数组的元素拷贝到另一个数组中。调用此成员函数用另一个数组的元素复写数组的元素。Copy不会释放内存;但是,如果必要,Copy可以为拷贝到数组的元素分配更多的内存。请参阅 CArray::Append CArray::Element TYPE&ElementAt(int nIndex); 返回值 数组元素的参考。 参数 TYPE指定数组元素类型的模板参数。 nIndex比0大或比0小的整数索引,并且小于或等于由GetUpperBound返回的值。 说明 返回一个对数组中指定元素的临时参考。它用于实现数组的左边界分配运算符。 请参阅 CArray::operator[] CArray::FreeExtra void FreeExtra( ); 说明 释放任何当数组扩展时所分配的额外的内存空间。此函数不影响数组的大小和上界。 CArray::GetAt TYPE GetAt(int nIndex) const; 返回值 当前在索引上的数组元素。 参数 TYPE指定数组元素类型的模板参数。 nIndex比0大或比0小的整数索引,并且小于或等于由GetUpperBound返回的值。 说明 返回特定索引的数组元素。注意 传递一个负值或一个比由GetUpperBound返回值大的值将会引起失败。 请参阅 CArray::SetAt,CArray::operator[],ConstElements CArray::GetData const TYPE* GetData( ) const;TYPE* GetData( ); 返回值 指向数组元素的指针。 参数 TYP
http://kimnan.yourblog.org/logs/427378.html
收藏到:Del.icio.us





