⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 index.h

📁 网络游戏魔域源代码 测试可以完整变异
💻 H
字号:
// 索引类,用于建立数据表之间的快速查询。加入的KEY不能重复
// 仙剑修,2001.12.18
// paled, 2003.8.7 modify
//////////////////////////////////////////////////////////////////////

#ifndef	TEMPLATE_INDEX_H
#define TEMPLATE_INDEX_H

//#include "Define.h"
#include "baseType.h"
#include "basefunc.h"

#pragma warning(disable:4786)
#include <map>
using namespace std;

///////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////

template	<TYPENAME K, TYPENAME D>
class Index
{
public:
	Index() {}
	virtual ~Index() {}
public:
	bool		Add(K key, D data)					{ m_map[key] = data; return true; }
	bool		Del(K key)							{ m_map.erase(key); return true; }
	bool		IsIn(K key)	const					{ if(m_map.find(key) !=m_map.end()) return true; return false; }
	const D&	At(K key)	const					{ return operator[](key); }
	D&			operator[](K key);
	const D&	operator[](K key) const;
	void		Clear() { m_map.clear(); }
	typedef	map<K, D> MAPINDEX;
	typedef	MAPINDEX::iterator	Iterator;
	typedef	MAPINDEX::const_iterator	ConstIterator;
	const K&	Key(Iterator iter)	const			{ return iter->first; }
	const D&	Data(Iterator iter)	const			{ return iter->second; }
	Iterator	Begin()								{ return m_map.begin(); }
	Iterator	End()								{ return m_map.end(); }
	DWORD		Size()								{ return m_map.size();}
public: // dump
	String		Dump()	const						{ String str="{ ("; 
														MAPINDEX::const_iterator iter=m_map.begin(); 
														for(; iter!=m_map.end(); iter++){ 
															if(iter!=m_map.begin()) str+="), (";
															str+=::DumpString(iter->first);
															str+=",";
															str+=::DumpString(iter->second); } 
														return str+=") }"; }
protected:
	MAPINDEX	m_map;
};

template	<TYPENAME K, TYPENAME D>
D&	Index<K, D>::operator[](K key)
{
	Iterator iter	= m_map.find(key);
	ASSERT(iter !=m_map.end());
	return iter->second;
}

template	<TYPENAME K, TYPENAME D>
const D&	Index<K, D>::operator[](K key) const
{
	ConstIterator iter	= m_map.find(key);
	ASSERT(iter !=m_map.end());
	return iter->second;
}


#endif // TEMPLATE_INDEX_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -