CMap,映射表类,也叫字典,一对一。适合用于频繁替换和查找的数据,由Key和Value组成,一般将Key作为唯一变量,通过Key即可找到Value。
CMap利用的是散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。这个映射函数叫做散列函数,存放记录的数组叫做散列表。适用于需要根据关键字进行快速检索的场合。在查找时不用像数组那样遍历index之前的元素,通过哈希表关键字可以快速查找其对应键值。//头文件#include//定义,继承于CObject//template< class KEY, class ARG_KEY, class VALUE, class ARG_VALUE >class CMap : public CObject//KEY:Class of the object used as the key to the map.//ARG_KEY:Data type used for KEY arguments; usually a reference to KEY.//VALUE:Class of the object stored in the map.//ARG_VALUE:Data type used for VALUE arguments; usually a reference to VALUE. CMap MyMap1; CMap MyMap2; //LPCTSTR也就是TCHAR*,也即是char*或者wchar*。 //添加也是设定值 MyMap1.SetAt(1,98.0); MyMap2.SetAt(_T("张三"),1); MyMap1[1] = 99.0; //查找 double dTest = 0; if (MyMap1.Lookup(1,dTest)) { AfxMessageBox(_T("找到了")); //此时dTest的值已经是99.0了 } //获取个数 int nLength = MyMap2.GetCount(); //遍历 CString strKey = _T(""); int nValue = 0; POSITION pos = MyMap2.GetStartPosition(); while(pos) { MyMap2.GetNextAssoc(pos,strKey,nValue); } //删除 MyMap1.RemoveKey(1); //清空 if(!MyMap1.IsEmpty())//判定是否为空 MyMap1.RemoveAll(); //不会执行,前面已经删掉了 if (!MyMap2.IsEmpty()) MyMap2.RemoveAll();