MFC容器MFC中容器类的使用
2013-10-17 14:02
190 查看
对于MFC中所提到的基本容器类,做一个基本的介绍和编程操作。 如有数据结构基础,可以直接看第四部分对容器类的操作。 第一,MFC提供三种基本的容器类:arrays(数组),lists(链表), maps(映射,也称作字典). 第二,各容器类的特征分类
第三,模板容器类和非模板容器类 模板容器类:
非模板容器类:
第四,模板容器类的使用 1,简单的容器类的使用CArray, CList, CMap 1.1 CArray的使用 基本数据类型 ,如int, char, and float
类型 | 排序? | 索引? | 插入元素 | 查找特定元素 | 重复的元素? |
List | Yes | No | Fast | Slow | Yes |
Array | Yes | By int | Slow | Slow | Yes |
Map | No | By key | Fast | Fast | No (keys)Yes (values) |
Collection contents | Arrays | Lists | Maps |
任意对象类型的容器 | CArray | CList | CMap |
任意对象指针类型的容器 | CTypedPtrArray | CTypedPtrList | CTypedPtrMap |
Arrays | Lists | Maps |
CObArray | CObList | CMapPtrToWord |
CByteArray | CPtrList | CMapPtrToPtr |
CDWordArray | CStringList | CMapStringToOb |
CPtrArray | CMapStringToPtr | |
CStringArray | CMapStringToString | |
CWordArray | CMapWordToOb | |
CUIntArray | CMapWordToPtr |
CArray myArray; 结构体或者类
CArray myArray;1.2 CList的使用 基本数据类型 ,如int, char, and float CList
myList; 结构体或者类CListmyList; 1.3 CMap的使用
CMap< int, int, MY_STRUCT, MY_STRUCT& > myMap1;
CMap< CString, LPCSTR, CPerson, CPerson& > myMap2;[cpp] view plaincopyprint?//map映射表 CMap<<FONT face="Courier New">int,int, CPoint, CPoint> myMap; //初始化哈希表,并指定其大小(数字为120%容量,最好取奇数) myMap.InitHashTable(13); //添加元数据 for (i=0; i<<SPAN style="COLOR: #800080">10; i++) { myMap.SetAt(i, CPoint(i,i*i)); } //遍历一次 POSITION pos = myMap.GetStartPosition(); while(pos != NULL) { CPoint pt; myMap.GetNextAssoc(pos, i, pt); } //查找特定元素 pos = myMap.GetStartPosition(); while(pos != NULL) { CPoint pt; myMap.GetNextAssoc(pos, i, pt); if (i == 3) { CString str; str.Format(_T("x:%d y:%d"), pt.x, pt.y); MessageBox(str); } } //删除数据 myMap.RemoveAll();
//map映射表CMap<<FONT face="Courier New">int, int, CPoint, CPoint> myMap;//初始化哈希表,并指定其大小(数字为120%容量,最好取奇数)myMap.InitHashTable(13);//添加元数据for (i=0; i<<SPAN style="COLOR: #800080">10; i++){myMap.SetAt(i, CPoint(i,i*i));}//遍历一次POSITION pos = myMap.GetStartPosition();while(pos != NULL){CPoint pt; myMap.GetNextAssoc(pos, i, pt);}//查找特定元素pos = myMap.GetStartPosition();while(pos != NULL){CPoint pt; myMap.GetNextAssoc(pos, i, pt);if (i == 3){CString str;str.Format(_T("x:%d y:%d"), pt.x, pt.y);MessageBox(str);}}//删除数据myMap.RemoveAll();2,指针类型的容器类的使用 CTypedPtrArray, CTypedPtrList, CTypedPtrMap 2.1 CTypedPtrArray的使用
CTypedPtrArray
//BASE_CLASS:为 CObArray or CPtrArray
CTypedPtrArray myArray;2.2 CTypedPtrList的使用 CTypedPtrList //BASE_CLASS: 为CObList or CPtrList
CTypedPtrList myList;2.3 CTypedPtrMap的使用 CTypedPtrMap //BASE_CLASS: 为CMapPtrToWord, CMapPtrToPtr, CMapStringToPtr, CMapWordToPtr, CMapStringToOb
CTypedPtrMap myPtrMap;[/code]
CTypedPtrMap myObjectMap;[/code]
相关文章推荐
- 搞ACM的伤不起啊。。
- Transformer中引用iqd作为数据源的时候数据预览出现乱码
- 在VS2012中设置默认启动
- 杭电acm 2008 数值统计
- 2013-10-17 实验之中断后推之tasklet
- jQuery 2.0.3 源码分析Sizzle引擎 - 编译函数(大篇幅)
- ie6 png透明
- C++ vector容器使用 排序
- jQuery 2.0.3 源码分析Sizzle引擎 - 解析原理
- VM下 NAT网络配置虚拟机上网
- 人搜笔试编程题——树的层序遍历
- 交换机端口安全 port-security配置详解
- wikioi 1017 乘积最大 (2000年NOIP全国联赛普及组NOIP全国联赛提高组)
- python confingparser与optparser
- ABAP 供应商主数据比较常用的表
- jQuery 2.0.3 源码分析Sizzle引擎 - 词法解析
- c、c++排序函数qsort、stable_sort
- linux 下长命令的简化(命令别名)
- 如何解读游戏运维工程师这一职位
- mysql如何将一个表导出为excel表格