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

📄 mapkey.h

📁 实时监控
💻 H
字号:
#ifndef _MAPKEY_H
#define _MAPKEY_H

#include "vector"

template<class U, class V>
class mapkey
{
	typedef std::pair<U, V> element;
	typedef std::vector<element> elements;
	elements elems;
	
public:
	V& operator[](U u)
	{
		for( int i=0; i<elems.size(); i++ )
		{
			element& ref = elems[i];
			if( ref.first == u )
			{
				return ref.second;
			}
		}
		elems.push_back(element(u, V()));
		return elems.back().second;
	}
	void clear()
	{
		elems.clear();
	}
	bool remove_key(const U& u)
	{
		for( int i=0; i<elems.size(); i++ )
		{
			element& ref = elems[i];
			if( ref.first == u )
			{
				elems.erase(elems.begin()+i);
				return true;
			}
		}
		return false;
	}
	bool remove_value(const V& v)
	{
		for( int i=0; i<elems.size(); i++ )
		{
			element& ref = elems[i];
			if( ref.second == v )
			{
				elems.erase(elems.begin()+i);
				return true;
			}
		}
		return false;
	}
	int count() const {return elems.size();}
	U& key_from_value(const V& v)
	{
		static U empty_U;
		for( int i=0; i<elems.size(); i++ )
		{
			element& ref = elems[i];
			if( ref.second == v )
			{
				return ref.first;
			}
		}
		return empty_U;
	}
	U& key(int index)
	{
		return elems[index].first;
	}
	V& value(int index)
	{
		return elems[index].second;
	}
};

#endif	// _MAPKEY_H

⌨️ 快捷键说明

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