您的位置:首页 > 其它

【MFC】容器类的使用

2012-02-21 14:18 274 查看
 对于MFC中所提到的基本容器类,做一个基本的介绍和编程操作。
  如有数据结构基础,可以直接看第四部分对容器类的操作。  第一,MFC提供三种基本的容器类:arrays(数组), lists(链表),
maps(映射,也称作字典).
  第二,各容器类的特征分类
类型排序?索引?插入元素查找特定元素重复的元素?
ListYesNoFastSlowYes
ArrayYesBy intSlowSlowYes
MapNoBy keyFastFastNo (keys)Yes (values)
  第三,模板容器类和非模板容器类  模板容器类:
Collection contentsArraysListsMaps
任意对象类型的容器CArrayCListCMap
任意对象指针类型的容器CTypedPtrArrayCTypedPtrListCTypedPtrMap
  非模板容器类:
ArraysListsMaps
CObArrayCObListCMapPtrToWord
CByteArrayCPtrListCMapPtrToPtr
CDWordArrayCStringListCMapStringToOb
CPtrArrayCMapStringToPtr
CStringArrayCMapStringToString
CWordArrayCMapWordToOb
CUIntArrayCMapWordToPtr
  第四,模板容器类的使用  1,简单的容器类的使用
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,
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]文章转自:/article/5434715.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: