MFC容器MFC中容器类的使用

MFC容器MFC中容器类的使用对于MFC中所提到的基本容器类,做一个基本的介绍和编程操作。  如有数据结构基础,可以直接看第四部分对容器类的操作。  第一,MFC提供三种基本的容器类:arrays(数组),lists(链表),maps(映射,也称作字典).  第二,各容器类的特征分类类型排序?索引?插入元素查找特定元素重复的元素?

大家好,欢迎来到IT知识分享网。MFC容器MFC中容器类的使用"

对于MFC中所提到的基本容器类,做一个基本的介绍和编程操作。

  如有数据结构基础,可以直接看第四部分对容器类的操作。

  第一,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

  第四,模板容器类的使用

  1,简单的容器类的使用 CArray, CList, CMap

    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;

    

  1. //map映射表 
  2. CMap<<FONT face=“Courier New”>int, int, CPoint, CPoint> myMap;  
  3.  
  4. //初始化哈希表,并指定其大小(数字为120%容量,最好取奇数) 
  5. myMap.InitHashTable(13); 
  6.  
  7. //添加元数据  
  8. for (i=0; i<<SPAN style=“COLOR: #800080”>10; i++) 
  9. {  
  10.     myMap.SetAt(i, CPoint(i,i*i)); 
  11. }  
  12.  
  13. //遍历一次 
  14. POSITION pos = myMap.GetStartPosition();  
  15. while(pos != NULL)  
  16. {  
  17.     CPoint pt; myMap.GetNextAssoc(pos, i, pt); 
  18.  
  19. //查找特定元素  
  20. pos = myMap.GetStartPosition();  
  21. while(pos != NULL) 
  22.     CPoint pt; myMap.GetNextAssoc(pos, i, pt);  
  23.     if (i == 3) 
  24.     {  
  25.         CString str; 
  26.         str.Format(_T(“x:%d y:%d”), pt.x, pt.y); 
  27.         MessageBox(str);  
  28.     }  
  29.  
  30. //删除数据  
  31. 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, 指针类型的容器类的使用 CTypedPtrArray, CTypedPtrList, CTypedPtrMap

    2.1 CTypedPtrArray的使用

      CTypedPtrArray   

        //BASE_CLASS:为 CObArray or CPtrArray

      CTypedPtrArray myArray;

    2.2 CTypedPtrList的使用

      CTypedPtrList    

        //BASE_CLASS: 为 CObList or CPtrList

     CTypedPtrList myList;

    2.3 CTypedPtrMap的使用

      CTypedPtrMap 

        //BASE_CLASS: 为CMapPtrToWord, CMapPtrToPtr, CMapStringToPtr, CMapWordToPtr, CMapStringToOb 

     CTypedPtrMap myPtrMap;
     CTypedPtrMap myObjectMap;

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/22012.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信