MFC CMap 自定义比较方法

MFC CMap 自定义比较方法

仿照以下写法即可实现:
摘抄自 afxtempl.h


实现一个CString的比较

  • 先创建引用CString的类
class MyCompare
{
public:
    MyCompare(const CString& str) : m_refStr(str)
    {

    }
    operator const CString() const
    {
        return m_refStr;
    }
    const CString& m_refStr;
};
  • 哈希码函数实现
template<>
AFX_INLINE UINT AFXAPI HashKey(MyCompare key)
{
    return HashKey((LPCTSTR)key.m_refStr);
}
  • 比较函数实现
template<>
BOOL AFXAPI CompareElements(const CString* pElement1, const MyCompare* pElement2)
{
    return (*pElement1) == pElement2->m_refStr;
}

示例代码

#include <afxtempl.h>

class MyCompare
{
public:
    MyCompare(const CString& str) : m_refStr(str)
    {

    }
    operator const CString() const
    {
        return m_refStr;
    }
    const CString& m_refStr;
};

template<>
AFX_INLINE UINT AFXAPI HashKey(MyCompare key)
{
    return HashKey((LPCTSTR)key.m_refStr);
}

template<>
BOOL AFXAPI CompareElements(const CString* pElement1, const MyCompare* pElement2)
{
    return (*pElement1) == pElement2->m_refStr;
}




int main(int argc, char *argv[])
{
    CMap<CString, MyCompare, int, int> mapStr;

    mapStr[CString("asdf")] = 1;

    mapStr[CString("asdf")] = 2;

    mapStr[CString("zzzz")] = 10;

    int nRes = 0;

    mapStr.Lookup(CString("zzzz"), nRes);

    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值