Windows04.CMap

CMap,映射表类,也叫字典,一对一。适合用于频繁替换和查找的数据,由Key和Value组成,一般将Key作为唯一变量,通过Key即可找到Value。
CMap利用的是散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。这个映射函数叫做散列函数,存放记录的数组叫做散列表。适用于需要根据关键字进行快速检索的场合。在查找时不用像数组那样遍历index之前的元素,通过哈希表关键字可以快速查找其对应键值。

//头文件
#include <afxtempl.h>

//定义,继承于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<int, int, double, double> MyMap1;
    CMap<CString, LPCTSTR, int, int> 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();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

快乐的提千万

江山父老能容我,不使人间造孽钱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值