【MFC】容器类的使用
2015-12-31 15:52
183 查看
对于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 | CPtd553rList | CMapPtrToPtr |
CDWordArray | CStringList | CMapStringToOb |
CPtrArray | CMapStringToPtr | |
CStringArray | CMapStringToString | |
CWordArray | CMapWordToOb | |
CUIntArray | CMapWordToPtr |
CArray<int, int> myArray; 结构体或者类
CArray<CPerson, CPerson&> myArray;1.2 CList的使用 基本数据类型 ,如int, char, and float CList
<int, int> myList; 结构体或者类CList<CPerson, 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] 文章转自:http://www.cnblogs.com/chenang/archive/2011/11/16/2251424.html
相关文章推荐
- VC中CDC、HDC、pDC区别与联系及相互转换
- Visual C++中MFC消息的分类
- VC实现获取当前正在运行的进程
- vc中SendMessage自定义消息函数用法实例
- VC实现让关闭按钮成灰色不可用的方法
- VC++中的字体设置方法详解
- VC程序设计中CreateProcess用法注意事项
- VC实现批量删除指定文件的方法
- MFC中Radio Button的用法详解
- MFC对话框中添加状态栏的方法
- MFC创建右键弹出菜单的方法
- MFC中动态创建控件以及事件响应实现方法
- C++ 关于MFC多线程编程的注意事项
- vc中使用SendMessage自定义消息函数
- MFC程序对文件的处理方法
- vc提示unexpected end of file found的原因分析
- MFC自定义消息的实现方法
- vc获取计算机名和ip地址的方法
- MFC实现在文件尾追加数据的方法
- VC6.0实现读取Excel数据的方法