在STL里有map,在MFC里有CMap,它们都是通过模板来构造这样一种结构,即可以将<key,value>键值对存储进来。对于键值对的存储会使用到某种数据结构,来达到快速存储与搜索的目的。
本文中使用二叉排序树来构造类CC_Map,具有插入、删除、搜索节点等基本功能。定义节点类CMapItem,它也是一个模板类,其中可以存储<key,value>,key和value的数据类型通过模板参数来定义。在CMapItem里重载了>,<,==,=等基本操作符,用于节点大小的比较。如果key、value为用户自定义类型,例如CCustomCls,则只需要在CCustomCls里重新重载这几个操作符即可(如果CCustomCls是作为key的数据类型的话,因为程序中默认是对key进行比较)。
由于是仓促之作,还很不完善,以后在使用中在进行修改吧,先存在这里,以作参考。更希望大家能够指出问题,帮助完善,共同学习。
CMapItem类
#pragma once
template<class First,class Second>
class CC_MapItem
{
public:
CC_MapItem(void)
{
m_pLeft = NULL;
m_pRight = NULL;
}
public:
~CC_MapItem(void)
{
m_pLeft = NULL;
m_pRight = NULL;
}
public:
void MakePair(First first,Second second)
{
m_First = first;
m_Second = second;
m_pLeft = NULL;
m_pRight = NULL;
};
//获取key
First GetFirst()
{
return m_First;
}
&nbs