【MFC】容器类的使用
2012-02-21 14:18
274 查看
对于MFC中所提到的基本容器类,做一个基本的介绍和编程操作。
如有数据结构基础,可以直接看第四部分对容器类的操作。 第一,MFC提供三种基本的容器类:arrays(数组), lists(链表),
maps(映射,也称作字典). 第二,各容器类的特征分类
第三,模板容器类和非模板容器类 模板容器类:
非模板容器类:
第四,模板容器类的使用 1,简单的容器类的使用
CArray, CList, CMap 1.1
CArray的使用 基本数据类型
,如int, char, and float
CList的使用 基本数据类型
,如int, char, and float CList
CPerson&> myList; 1.3 CMap的使用
如有数据结构基础,可以直接看第四部分对容器类的操作。 第一,MFC提供三种基本的容器类:arrays(数组), lists(链表),
maps(映射,也称作字典). 第二,各容器类的特征分类
类型 | 排序? | 索引? | 插入元素 | 查找特定元素 | 重复的元素? |
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, CList, CMap 1.1
CArray的使用 基本数据类型
,如int, char, and float
CArray<int, int> myArray; 结构体或者类
CArray<CPerson, CPerson&> myArray;1.2
CList的使用 基本数据类型
,如int, char, and float CList
<int,CList<CPerson,
int> myList; 结构体或者类
CPerson&> myList; 1.3 CMap的使用
CMap< int, int, MY_STRUCT, MY_STRUCT& > myMap1;
CMap< CString, LPCSTR, CPerson, CPerson& > myMap2;//map映射表CMap<int, int, CPoint, CPoint> myMap;//初始化哈希表,并指定其大小(数字为120%容量,最好取奇数)myMap.InitHashTable(13);//添加元数据for (i=0; i<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, TYPE>
//BASE_CLASS:为 CObArray or CPtrArray
CTypedPtrArray<CObArray, CPerson*> myArray;2.2 CTypedPtrList的使用 CTypedPtrList<BASE_CLASS, TYPE> //BASE_CLASS: 为 CObList or CPtrList
CTypedPtrList<CPtrList, MY_STRUCT*> myList;2.3 CTypedPtrMap的使用 CTypedPtrMap<BASE_CLASS, KEY,VALUE> //BASE_CLASS: 为CMapPtrToWord, CMapPtrToPtr, CMapStringToPtr, CMapWordToPtr, CMapStringToOb
[code] CTypedPtrMap<CMapPtrToPtr, CString, MY_STRUCT*> myPtrMap;[/code]
[code] CTypedPtrMap<CMapStringToOb, CString, CMyObject*> myObjectMap;[/code]文章转自:/article/5434715.html
相关文章推荐
- 【MFC】容器类的使用
- 用VS2012做MFC ActiveX控件并使用html、c#、c++测试容器
- MFC容器MFC中容器类的使用
- 【MFC】容器类的使用
- 用VS2012做MFC ActiveX控件并使用html、c#、c++测试容器
- 【MFC】容器类的使用
- MFC中容器类的使用
- 关于MFC使用deque、vector等容器编译不通过的解决方法
- map容器使用经验点滴
- 为何mfc不使用 dynamic_cast这样的基指针向派生类指针的显示转换?(转)
- Map 容器接口 及类中的方法的使用
- MFC使用SendMessage()发送自定义消息实现进程间通信
- MFC的对话框中使用OpenGL绘图
- opencv图像处理(1.Visual C++6.0 MFC的使用)
- 使用MFC作为共享的DLL和使用MFC作为静态链接库
- MFC CListCtrl的使用说明
- VC/MFC ComboBox控件使用
- MFC容器
- 新手使用MFC基于CWinThread实现线程通信
- 如何在自定义Listener(监听器)中使用Spring容器管理的bean