11第十一章MFC程序设计集合类课件.ppt

上传人(卖家):晟晟文业 文档编号:4300511 上传时间:2022-11-27 格式:PPT 页数:32 大小:72KB
下载 相关 举报
11第十一章MFC程序设计集合类课件.ppt_第1页
第1页 / 共32页
11第十一章MFC程序设计集合类课件.ppt_第2页
第2页 / 共32页
11第十一章MFC程序设计集合类课件.ppt_第3页
第3页 / 共32页
11第十一章MFC程序设计集合类课件.ppt_第4页
第4页 / 共32页
11第十一章MFC程序设计集合类课件.ppt_第5页
第5页 / 共32页
点击查看更多>>
资源描述

1、MFC程序设计程序设计集合类作作 者:李者:李 季季主要内容主要内容l数组l列表l映射l类型指针类l基于模板的集合类数组数组lC和C+的数组缺陷无边界检查lInt array10;for(int i=0;i=0&nIndex=0&nIndex m_nSize);m_pDatanIndex=nVal;数组数组lCArray array(10);for(int I=0;I=10;i+)array.Set(i,i+1);MFC数组类数组类特定类型特定类型类 名数据类型CByteArray8位字节(BYTE)CWordArray16位字节(WORD)CDWordArray32位双字节(DWORD)CU

2、IntArray无符号整型(UINT)CStringArrayCStringCPtrArrayvoid指针CObArrayCObject指针MFC数组类函数数组类函数声明、初始化声明、初始化lCUIntArray array;array.SetSize(10);for(int I=0;i10;i+)arrayi=i+1;lCSrtingArray array;array.SetSize(10);for(int I=0;I 10;i+)CString string;string.Format(_T(“%d”),i);array=srting;MFC数组类函数数组类函数添加添加lCUIntArra

3、y array;array.SetSize(9);for(int I=0;I 4;i+)arrayi=I+1;for(I=4;I 9;i+)arrayi=I+2;array.InsertAt(4,5);MFC数组类函数数组类函数删除删除lCUIntArray array;array.SetSize(10);for(int i=0;i 10;i+)arrayi=i+1;array.RemoveAt(0);TRACE(_T(“Count=%dn”),array.GetSize();array.RemoveAt(0,3);TRACE(_T(“Count=%dn”),array.GetSize();a

4、rray.RemoveAll();TRACE(_T(“Count=%dn”),array.GetSize();MFC数组类函数数组类函数删除删除l如果数组元素是CPtrArray或CObArray类型,要先删除被删除指针所指对象然后清空数组。l错误的写法array.RemoveAll();l正确的写法int nSize=array.GetSize();for(int i=0;i nSize;i+)delete arrayi;array.RemoveAll();MFC数组类数组类动态调整数组大小动态调整数组大小lCUIntArray array;array.SetSize(10);for(int

5、 i=0;i 10;i+)arrayi=i+1;array.SetSize(20);for(i=10;i 20;i+)arrayi=i +1;注:原来的项仍保持原值。MFC数组类数组类动态调整数组大小动态调整数组大小lCUIntArray array;for(int i=0;i10;i+)array.SetAt(I,i+1);lCUIntArray array;for(int i=0;i10;i+)array.SetAtGrow(I,i+1);tlCUIntArray array;for(int i=0;i10;i+)array.Add(i+1);l自他可以自动增大数组的函数有:InsertA

6、t、Append、CopyMFC数组类数组类CArray类类l模板类,可为任意数据类型创建类型安全数组类。lCArray array;for(int i=0;i10;i+)array.SetAtGrow(i,CPoint(i*10,0);int nCount=array.GetSize();for(i=0;inCount;i+)CPoint point=arrayi;TRACE(_T(“x=%d,y=%dn”),point.x,point.y);MFC数组类数组类基于模板基于模板lCArraylTYPE用来指定元素的数据类型,可以是C+基础类型(如int、char、long、float等)、结

7、构或类lARG_TYPE用来指定成员函数的参数类型ltypedef CArray CUIntArray;l与CUIntArray等价列表列表l包含指向其他列表项指针的列表项集合。l列表分类单链表双向链表循环链表MFC列表类列表类特定类型特定类型类 名数据类型CObListCObject指针CPtrListvoid指针CStringListCStringMFC列表类列表类lMFC列表是双向链表。lPOSITION标识列表中的位置,实际上是指向CNode数据结构的指针。lCNode包含三个字段:指向下一个CNode结构的指针、一个指向上一个CNode结构的指针、一个指向列表项数据的指针,MFC列表

8、类函数列表类函数声明、添加声明、添加lCStringList list;for(int i=0;i=0;i-)list.AddHead(szScorei);MFC列表类函数列表类函数遍历遍历lPOSITION pos=list.GetHeadPosition();while(pos!=NULL)CString string=list.GetNest(pos);TRACE(_T(“%sn”),string);lPOSITION pos=list.GetPrev(pos);while(pos!=NULL)CString string=list.GetPrev(pos);TRACE(_T(“%sn”

9、),string);MFC列表类列表类CList类类l模板类,可为任意数据类型创建类型安全列表类。lCList list;for(int i=0;i10;i+)list.AddTail(CPoint(i*10,0);POSITION pos=list.GetHeadPosition();while(pos!=NULL)CPoint point=list.GetNext(pos);TRACE(_T(“x=%d,y=%dn”),point.x,point.y);MFC列表类列表类CList类类l如果在CList中使用了类并且调用Find函数,应满足下列条件之一:类具有重载了的=运算符,执行与相似对

10、象的比较。用特殊类型的版本覆盖了模板函数CompareElements,执行对两个类实例的比较。映射映射l又称词典,一种表格,其中一种项目是另一种项目的关键字。l元素承对存在,一为键值对象(key object),一为实值对象(value object)。MFC映射类映射类特定类型特定类型类 名说 明CMapWordToPtr保存void指针,关键字为WORDCMapWordToOb保存CObject指针,关键字为WORDCMapPtrToWord保存WORD,关键字为void指针CMapPtrToPtr保存void指针,关键字为其他void指针CMapStringToOb保存CObject指

11、针,关键字为字符串CMapStringToPtr保存void指针,关键字为字符串CMapStringToString 保存字符串,关键字为其他字符串MFC映射类函数映射类函数lCMapStringToString map;map_T(“Sunday”)=_T(“Dimanche”);map_T(“Monday”)=_T(“Lundi”);map_T(“Tuesday”)=_T(“Mardi”);map_T(“Wednesday”)=_T(“Mercredi”);map_T(“Thursday”)=_T(“Jeudi”);map_T(“Friday”)=_T(“Vendredi”);map_T(

12、“Saturday”)=_T(“Samedi”);lCString string;if(map.Lookup(_T(“Thursday”),string)TRACE(_T(“Thursday in English=%s in Frenchn”),string);MFC映射类函数映射类函数lPOSITION pos=map.GetStartPosition();while(pos!=NULL)CString strKey;CString strItem;map.GetNextAssoc(pos,strKey,strItem);TRACE(_T(“Key=%s,Item=%sn”),strKey,

13、strItem);lFdsMFC映射类映射类CMap类类l模板类,可为任意数据类型创建类型安全映射类。lCMap map;map0=CPoint(0,0);map1=CPoint(100,0);map2=CPoint(100,100);map3=CPoint(0,100);CPoint point;if(map.Lookup(2,point)TRACE(_T(“2=(%d,%d)n”),point.x,point.y);类型指针类类型指针类类 名说 明CTypedPtrArray 管理指针数组CTypedPtrList管理指针链接列表CTypedPtrMap管理使用指针作为项目或关键字的映射类

14、型指针类类型指针类lCTypedPtrList list;fot(int i=0;i10;i+)int x=i*10;Cline*pLine=new Cline(x,0,x,100);list.AddTail(pLine);POSITION pos=list.GetHeadPosition();while(pos!=NULL)Cline*pLine=list.GetNext(pos);集合类集合类类型 有序索 引插入速度 查询速度 复制元素Array是是(整数索引值)慢慢可以List是否快慢可以Map否是(关键字)快快实值可以基于模板的集合类基于模板的集合类lCArray lCList lCMap lCTypedPtrArray lCTypedPtrList lCTypedPtrMap 基于模板的集合类基于模板的集合类l元素类型为自创类时,如调用查询函数,须重载=运算符或CompareElements函数。l元素类型为指针时,全部删除前须逐一删除被删除指针所指对象。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(11第十一章MFC程序设计集合类课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|