CArray
C++並不支持動態數組,MFC提供了一個CArray類來實現動態數組的功能。有效的使用CArray類,可以提高程序的效率。MFC提供了一套模板庫,來實現一些比較藏劍的數據結構結構,如Array,List,Map。CArry就是其中的一個,用來實現動態數組的功能。
引用傳遞,對於CArray的效率更高些,節省內存的同時,也加快了程序運行速度。第二個參數用CPoint&。
MFC的數組類支持的數組類似於常規數組,可以存放任何數據類型。常規數組在使用前必須將其定義成能夠容納所有可能需要的元素,即先確定大小,而MFC數組類創建的對象可以根據需要動態地增大或減小,數組的起始下標是0,而上限可以是固定的,也可以隨着元素的增加而增加,數組在內存中的地址仍然是連續分配的。
MFC定義了數組模板類CArray,並針對各種常用變量類型定義了CByteArray,CArray,CUIntArray,CDArray,CStringArray,CObArray,CPtrArray。
CArray --- Afxtempl.h
CByteArray --- Afxcoll.h
CArray --- Afxcoll.h
CDArray --- Afxcoll.h
CUIntArray --- Afxcoll.h
CStringArray --- Afxcoll.h
CPtrArray --- Afxcoll.h
CArray使用說明:
(1).在使用一個數組之前,使用SetSize建立它的大小和爲它分配內存。如果不使用SetSize,則爲數組添加元素就會引起頻繁地重新分配和拷貝。頻繁地重新分配和拷貝,不但沒有效率,反而會導致內存碎片。
CTime
CTime 分函數和類兩個功能。
CTime 功能是把日期和時間轉換爲字符串,而CTime類的對象表示的時間是基於格林威治標準時間(GMT)。
(1) 函數:ctime
功能:把日期和時間轉換爲字符串
函數原型:char* ctime(const time_t *time);
NOTE: 若在linux下使用本函數,需要頭文件<time.h>,在VC6.0下添加頭文件<ctime>。
(2) CTime類
CTime沒有基類。一個CTime對象代表一個絕對的時間和日期。CTime類引入了ANSI time_t數據類型以及其相關的運行時函數,其中包括向一個Gregorian日期和24小時時間轉換功能。
CTime類的對象表示的基於世界標準時間(UCT),它是基於格林威治(Greenwich)時間(GMT)的。CTimeSpan類的對象表示的是時間間隔。CTime和CTimeSpan類都是不可派生的。因爲沒有虛函數,CTime和CTimeSpan對象的大小都正好是四個字節。多數成員函數都是內聯函數實現。
CTime類一般不會被繼承使用。其對象的大小是8個字節。
CTime表示的日期上限是2038年1月18日,下限是1970年1月1日 12:00:00 AM GMT。
//#include
#include
#include
int main(int argc, char* argv[])
{
/*
測試一:*/
// example for CTime::GetCurrentTime
/************************************************************************/
/*
下面實現的功能是秒錶,並和時間進行對應
*/
/************************************************************************/
int i = 100;
while(i--){
CTime time = CTime::GetCurrentTime();
CString strTime = time.Format ("%S");//%Y-%m-%d %H:%M:%S 年月日 時分秒
cout << strTime << endl;
Sleep(1000);//睡眠一秒
}
/*
測試二 注意頭文件切換
這個時間測試問題,需要對C++和C語言的標準庫進行分辨,即只需要添加這兩個頭文件即可。
#include
#include
time_t t;
t=time(&t);
cout << "Today's date and time: "<< ctime(&t);
*/
return 0;
}