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; }