大家好,欢迎来到IT知识分享网。
如有数据结构基础,可以直接看第四部分对容器类的操作。
第一,MFC提供三种基本的容器类:arrays(数组),
第二,各容器类的特征分类
类型 | 排序? | 索引? | 插入元素 | 查找特定元素 | 重复的元素? |
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 |
第四,模板容器类的使用
1,简单的容器类的使用
1.1 CArray的使用
基本数据类型 ,如int, char, and float
CArray myArray;
结构体或者类
CArray myArray;
1.2 CList的使用
基本数据类型 ,如int, char, and float
CList myList;
结构体或者类
CList myList;
1.3 CMap的使用
CMap< int, int, MY_STRUCT, MY_STRUCT& > myMap1;
CMap< CString, LPCSTR, CPerson, CPerson& > myMap2;
- //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, 指针类型的容器类的使用
2.1 CTypedPtrArray的使用
CTypedPtrArray
//BASE_CLASS:为 CObArray or CPtrArray
CTypedPtrArray myArray;
2.2 CTypedPtrList的使用
CTypedPtrList
//BASE_CLASS: 为
CTypedPtrList myList;
2.3 CTypedPtrMap的使用
CTypedPtrMap
//BASE_CLASS: 为CMapPtrToWord, CMapPtrToPtr, CMapStringToPtr, CMapWordToPtr, CMapStringToOb
CTypedPtrMap myPtrMap;
CTypedPtrMap myObjectMap;
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/22012.html