set與map的模擬實現

map的底層結構就是紅黑樹,因此在map中直接封裝一棵紅黑樹,然後將其他接口包裝

/////map的模擬實現
namespace bit
{
	template<class k,classv>
	class map
	{
		typedef pai<k, v> ValueType;
		//該內部類的作用是:將value中的key提取出來

		struct KeyOfValue
		{
			constk& operator()(const ValueType& v)
			{
				return v.first;
			}
		};

		typedef RBTree<k, ValueType, KeyOfValue> RBTree;
	public:
		typedef typename RBTree::Iterator Iterator;
	public:
		map()
		{}

		////Iterator
		Iterator Begin()
		{
			return _t.Begin();
		}

		Iterator End()
		{
			return _t.End();
		}

		////Capacity
		size_t Size()const
		{
			return _t.Size();
		}

		bool Empty()const
		{
			return _t.Empty();
		}

		//Acess
		v& operator[](const k& key)
		{
			return (*(_t.Insert(ValueType(key, v()))).first).second;
		}
		
		const v& operator[](const k& key)const
		{
			return (*(_t.Insert(ValueType(key, v()))).first).second;
		}

		//modify
		pair<Iterator, bool>Insert(const ValueType& data)
		{
			return _t.Insert(data);
		}

		void Clear()
		{
			_t.Clear();
		}

		Iterator Find(const k& key)
		{
			return _t.Find(key);
		}
	private:
		RBTree _t;
	};
}

set的模擬實現

set的底層爲紅黑樹,因此只需在set內部封裝一棵紅黑樹,即可將該容器實現出來。

//set的模擬實現

namespace bit
{
	template<class k>
	class set
	{
		typedef k ValueType;

		//該內部類的作用是:將value中的key提取出來
		struct KeyOfValue
		{
			const k& operator()(const ValueType& key)
			{
				return key;
			}
		};

		//紅黑樹類型重命名
		typedef RBTree<k, ValueType, KeyOfValue> RBTree;

	public:
		typedef typename RBTree::Iterator Iterator;

	public:
		set()
		{
			//Iterator
			Iterator Begin()
			{
				return _t.Begin();
			}

			Iterator End()
			{
				return _t.End();
			}

			// Capacity
			size_t Size()const
			{
				return _t.Size();
			}
			bool Empty()const
			{
				return _t.Empty();
			}

			// modify
			pair<Iterator, bool> Insert(const ValueType& data)
			{
				return _t.Insert(data);
			}

			void Clear()
			{
				_t.Clear();
			}

			Iterator Find(const K& key)
			{
				return _t.Find(key);
			}
		}
	private:
		RBTree _t;
	};
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章