您的位置:首页 > 其它

【MFC】容器类的使用

2015-12-31 15:52 183 查看
 对于MFC中所提到的基本容器类,做一个基本的介绍和编程操作。  如有数据结构基础,可以直接看第四部分对容器类的操作。  第一,MFC提供三种基本的容器类:arrays(数组), lists(链表), maps(映射,也称作字典).  第二,各容器类的特征分类
类型排序?索引?插入元素查找特定元素重复的元素?
ListYesNoFastSlowYes
ArrayYesBy intSlowSlowYes
MapNoBy keyFastFastNo (keys)Yes (values)
  第三,模板容器类和非模板容器类  模板容器类:
Collection contentsArraysListsMaps
任意对象类型的容器CArrayCListCMap
任意对象指针类型的容器CTypedPtrArrayCTypedPtrListCTypedPtrMap
  非模板容器类:
ArraysListsMaps
CObArrayCObListCMapPtrToWord
CByteArrayCPtd553rListCMapPtrToPtr
CDWordArrayCStringListCMapStringToOb
CPtrArray CMapStringToPtr
CStringArray CMapStringToString
CWordArray CMapWordToOb
CUIntArray CMapWordToPtr
  第四,模板容器类的使用  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] 文章转自:http://www.cnblogs.com/chenang/archive/2011/11/16/2251424.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  vc mfc