您的位置:首页 > 其它

MFC容器MFC中容器类的使用

2013-10-17 14:02 190 查看
对于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
myArray;

      结构体或者类
      
CArray
myArray;
    1.2 CList的使用      基本数据类型 ,如int, char, and float      CList
myList;      结构体或者类
      CListmyList;    1.3 CMap的使用
      CMap< int, int, MY_STRUCT, MY_STRUCT& > myMap1;
      CMap< CString, LPCSTR, CPerson, CPerson& > myMap2;
    [cpp] view plaincopyprint?//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(); 
//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;
[/code]
     CTypedPtrMap myObjectMap;
[/code]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: