您的位置:首页 > 其它

MFC中容器类的使用

2013-08-24 10:23 162 查看
对于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;      结构体或者类
      CList
myList;    1.3 CMap的使用
      CMap< int, int, MY_STRUCT, MY_STRUCT& > myMap1;
      CMap< CString, LPCSTR, CPerson, CPerson& > myMap2;
    
//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 
[code]     CTypedPtrMap myPtrMap;
[/code]
[code]     CTypedPtrMap myObjectMap;
[/code]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: