c++ CArray函數


CArray屬於MFC,是一個數組模板類。MFC的數組類支持的數組類似於常規數組,可以存放任何數據類型。常規數組在使用前必須將其定義成能夠容納所有可能需要的元素,即先確定大小,而MFC數組類創建的對象可以根據需要動態地增大或減小,數組的起始下標是0,而上限可以是固定的,也可以隨着元素的增加而增加,數組在內存中的地址仍然是連續分配的。但是聲明一個carray數組必須是確定數組長度,可以之后隨元素增加而增加。
使用CArray要添加一個頭文件#include <afxtempl.h>
  定義一個CArray數組對象CArray<int, int> arr;第一個參數為數組元素的類型,第二個參數為int類型,一般有兩種選擇,一種選擇與第一個參數類型相同,它意味着數組對象作為參數傳遞時,傳遞的是數組對象。第二種選擇是第一個參數類型的引用,它意味着數組對象作為參數傳遞時,傳遞的是數組對象的指針,這種方法效率更高。
   SetSize函數設定數組的大小,該函數有兩個參數,第一個參數設定數組的大小;第二個參數設定數組增長時內存分配的大小,缺省值是-1,使用缺省值可以保證內存分配得更加合理。本例中第二個參數是n,意即增加一個數組元素會分配n個元素大小的內存供數組使用。 可以隨時使用SetSize函數設定數組的大小,如果第一個參數值小於數組已有成員數量,多於第一個參數值的成員將被截去並釋放相應內存。在使用CArray數組前,最好先使用SetSize確定其大小並申請存儲空間。如果不這樣做,向數組中增加元素時,需要不斷地移動和拷貝元素造成運行的低效率和內存碎塊。
   SetAt方法初始化數組元素,void SetAt( int n, ARG_TYPE newElement );將第n的元素的值設置成newElement.
一些基本函數:

CArray::GetSize

int GetSize( ) const;
取得當前數組元素個數.

CArray::GetUpperBound

int GetUpperBound( ) const;
最得最大的元素的索引,由於C的數組是從0開始,所以此函數的返回值比GetSize的返回值比 小.

CArray::SetSize

void SetSize( int nNewSize, int nGrowBy = -1 );
throw( CMemoryException );
設置數組的大小.

CArray::FreeExtra

void FreeExtra( );
釋放未使用的空間.

CArray::RemoveAll

void RemoveAll( );
刪除所有的元素.

CArray::GetAt

TYPE GetAt( int nIndex ) const;
根據索引(參數)取得某個數組元素的值.

CArray::SetAt

void SetAt( int nIndex, ARG_TYPE newElement );
將第nIndex的元素的值設置成newElement.

CArray::ElementAt

TYPE& ElementAt( int nIndex );
取得第nIndex個元素的引用.

CArray::GetData

const TYPE* GetData( ) const;
TYPE* GetData( );
取得靜態數組指針.

void SetAtGrow( int nIndex, ARG_TYPE newElement );

throw( CMemoryException );
將第nIndex個元素設置成newElement,如果數組元素不夠,會增加空間.

CArray::Add

int Add( ARG_TYPE newElement );
throw( CMemoryException );
增加一個元素.

CArray::Append

int Append( const CArray& src );
將另一個數組追加過來.

void Copy( const CArray& src );

復制數組,已經內容將會被覆蓋.

CArray::InsertAt

void InsertAt( int nIndex, ARG_TYPE newElement, int nCount = 1 );
throw( CMemoryException );
void InsertAt( int nStartIndex, CArray* pNewArray );
throw( CMemoryException );
插入一個元素(或另一個數組)到數組.

CArray::RemoveAt

void RemoveAt( int nIndex, int nCount = 1 );
刪除另一個元素.

CArray::operator [ ]

TYPE& operator []( int nIndex );
TYPE operator []( int nIndex ) const;
通過索引設置或取得另一個元素.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM