亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? hash_map

?? C語言庫函數的原型,有用的拿去
??
?? 第 1 頁 / 共 5 頁
字號:
// hash_map stl/clr header
#ifndef _CLI_HASH_MAP_
 #define _CLI_HASH_MAP_
#include <cliext/xhash>
#include <cliext/utility>

namespace cliext {
	namespace impl {
//
// TEMPLATE CLASS hash_map_traits
//
template<typename _Key_t,	// key type
	typename _Mapped_t,		// mapped type
	bool _Mflag>		// true if multiple equivalent keys are permitted
	ref class hash_map_traits
	{	// traits required to make hash table behave like a map
public:
	typedef hash_map_traits<_Key_t, _Mapped_t, _Mflag> _Mytype_t;

	typedef _Key_t key_type;
	typedef _Mapped_t mapped_type;
	typedef _STLCLR GenericPair<_Key_t, _Mapped_t>^ value_type;
	typedef _STLCLR BinaryDelegate<key_type, key_type, bool>
		key_compare;
	typedef _STLCLR BinaryDelegate<value_type, value_type, bool>
		value_compare;
	typedef _STLCLR UnaryDelegate<key_type, int> hasher;

	typedef _Key_t generic_key;
	typedef _Mapped_t generic_mapped;

	hash_map_traits()
		:	comp(gcnew key_compare(&_Hash_key_compare)),
			hash_fun(gcnew hasher(&_Hasher)),
			_Multi(_Mflag)
		{	// construct with default comparator and hash function
		}

	hash_map_traits(key_compare^ _Pred)
		:	comp(_Pred),
			hash_fun(gcnew hasher(&_Hasher)),
			_Multi(_Mflag)
		{	// construct with specified comparator and default hash function
		}

	hash_map_traits(key_compare^ _Pred, hasher^ _Hashfn)
		:	comp(_Pred), hash_fun(_Hashfn),
			_Multi(_Mflag)
		{	// construct with specified comparator and default hash function
		}

	key_compare^ key_comp()
		{	// return object for comparing keys
		return (comp);
		}

	value_compare^ value_comp()
		{	// return object for comparing values
		return (gcnew value_compare(this, &_Mytype_t::_Value_compare));
		}

	hasher^ hash_delegate()
		{	// return object for hashing key
		return (gcnew hasher(this, &hash_map_traits::get_hash));
		}

	int get_hash(key_type _Key)
		{	// rehash hashed _Key to int value by pseudorandomizing transform
		int _Hashval = hash_fun(_Key);
		int _Quot = _Hashval / 127773;
		int _Rem = _Hashval % 127773;

		_Rem = 16807 * _Rem - 2836 * _Quot;
		if (_Rem < 0)
			_Rem += 2147483647;
		return (_Rem);
		}

	static key_type get_key(value_type% _Val)
		{	// extract key from element value
		return (_Val->first);
		}

	static mapped_type get_mapped(value_type% _Val)
		{	// extract mapped from element value
		return (_Val->second);
		}

_STLCLR_FIELD_ACCESS:
	bool _Value_compare(value_type _Left, value_type _Right)
		{	// test if _Left ordered before _Right
		return (comp(_Left->first, _Right->first));
		}

	static int _Hasher(key_type _Key)
		{	// hash _Key to int value using template function hash_value
		return (hash_value(_Key));
		}

	// data members
	key_compare^ comp;	// the comparator predicate for keys: ==, <=, or >=
	hasher^ hash_fun;	// the hash function
	bool _Multi;		// true if multiple equivalents keys are permitted
	};

//
// TEMPLATE REF CLASS HashKVPEnumerator
//
template<typename TKey,
	typename TMapped,
	typename TValue>
	ref class HashKVPEnumerator
	:	public _STLCLR HashEnumerator<TKey, TValue>,
			System::Collections::Generic::IEnumerator<
				System::Collections::Generic::KeyValuePair<
					TKey, TMapped>>
	{	// typed enumerator for a tree-based dictionary
public:
	typedef HashKVPEnumerator<TKey, TMapped, TValue> _Mytype_t;
	typedef _STLCLR HashEnumerator<TKey, TValue> _Mybase_t;
	typedef _STLCLR Generic::INode<TValue> _Mynode_it;
	typedef System::Collections::Generic::KeyValuePair<TKey, TMapped>
		_Mykvpair_t;

	HashKVPEnumerator(_Mynode_it^ _First)
		:	_Mybase_t(_First)
		{	// construct from initial tree node
		}

	~HashKVPEnumerator()
		{	// destroy the object
		}

	property _Mykvpair_t Current
		{	// get or set next element
		virtual _Mykvpair_t get() new
			{	// get next element
			TValue _Myval = _Mybase_t::Current;

			return (_Mykvpair_t(_Myval->first, _Myval->second));
			}

		virtual void set(_Mykvpair_t)
			{	// set next element
			throw gcnew System::InvalidOperationException();
			}
		};
	};

//
// TEMPLATE CLASS hash_map_base0
//
template<typename _Key_t,
	typename _Mapped_t>
	ref class hash_map_base0
	:	public hash<
			hash_map_traits<_Key_t, _Mapped_t, false> >,
			System::Collections::Generic::IDictionary<_Key_t, _Mapped_t>
	{	// ordered red-black tree of unique keys + values
public:
	// types
	typedef hash_map_base0<_Key_t, _Mapped_t>
		_Mytype_t;
	typedef hash<
		hash_map_traits<_Key_t, _Mapped_t, false> > _Mybase_t;
	typedef _STLCLR GenericPair<_Key_t, _Mapped_t> _Object_t;

	typedef _Key_t key_type;
	typedef _Mapped_t mapped_type;

	typedef System::Collections::Generic::KeyValuePair<_Key_t, _Mapped_t>
		_Mykvpair_t;
	typedef cli::array<_Mykvpair_t> _Mykvarray_t;

	// basics
	hash_map_base0()
		:	_Mybase_t()
		{	// construct empty hash_map from defaults
		}

	hash_map_base0(hash_map_base0% _Right)
		:	_Mybase_t((_Mybase_t%)_Right)
		{	// construct by copying a list
		}

	hash_map_base0% operator=(hash_map_base0% _Right)
		{	// assign
		_Mybase_t::operator=(_Right);
		return (*this);
		}

	// constructors
	explicit hash_map_base0(key_compare^ _Pred)
		:	_Mybase_t(_Pred)
		{	// construct empty hash_map from comparator
		}

	hash_map_base0(key_compare^ _Pred, hasher^ _Hasher)
		:	_Mybase_t(_Pred, _Hasher)
		{	// construct with specified compare and hash
		}

	template<typename _Iter_t>
		hash_map_base0(_Iter_t _First, _Iter_t _Last)
		:	_Mybase_t()
		{	// construct hash_map from [_First, _Last), default comparator
		for (; _First != _Last; ++_First)
			insert((value_type)*_First);
		}

	template<typename _Iter_t>
		hash_map_base0(_Iter_t _First, _Iter_t _Last, key_compare^ _Pred)
		:	_Mybase_t(_Pred)
		{	// construct hash_map from [_First, _Last), comparator
		for (; _First != _Last; ++_First)
			insert((value_type)*_First);
		}

	template<typename _Iter_t>
		hash_map_base0(_Iter_t _First, _Iter_t _Last,
			key_compare^ _Pred, hasher^ _Hasher)
		:	_Mybase_t(_Pred, _Hasher)
		{	// construct hash_map from [_First, _Last), compare and hash
		for (; _First != _Last; ++_First)
			insert((value_type)*_First);
		}

	// accessors
	property mapped_type default[key_type]
		{	// get or set subscripted element
		virtual mapped_type get(key_type _Key)
			{	// get _Key element
			_Pairnb _Ans = insert_node(
				gcnew _Object_t(_Key), nullptr);

			return (_Ans.first->_Value->second);
			}

		virtual void set(key_type _Key, mapped_type _Val)
			{	// set _Key element
			node_type^ _Node = insert_node(
				gcnew _Object_t(_Key), nullptr).first;

			_Node->_Value->second = _Val;
			}
		};

	// interfaces
private:
	property size_type Count_kvpair
		{	// element count
		virtual size_type get() sealed
			= System::Collections::Generic::ICollection<_Mykvpair_t>
				::Count::get
			{	// get element count
			return (size());
			}
		};

	property bool IsReadOnly_kvpair
		{	// test if read only
		virtual bool get() sealed
			= System::Collections::Generic::ICollection<_Mykvpair_t>
				::IsReadOnly::get
			{	// test if read only
			return (false);
			}
		};

	virtual void CopyTo(_Mykvarray_t^ _Dest, int _First) sealed
		= System::Collections::Generic::ICollection<_Mykvpair_t>::CopyTo
		{	// copy to _Dest, beginning at _First
		node_type^ _Node = head_node();

		for (int _Idx = size(); 0 <= --_Idx; )
			{	// copy back to front
			_Node = _Node->prev_node();
			_Dest[_First + _Idx] = _Mykvpair_t(_Node->_Value->first,
				_Node->_Value->second);
			}
		}

	virtual System::Collections::Generic::IEnumerator<_Mykvpair_t>^
		GetEnumerator() sealed
		= System::Collections::Generic::IEnumerable<_Mykvpair_t>
			::GetEnumerator
		{	// get enumerator for the container
		return (gcnew HashKVPEnumerator<
			_Key_t, _Mapped_t, _Object_t^>(front_node()));
		}

	virtual void Add(_Mykvpair_t _Kvpair) sealed
		= System::Collections::Generic::ICollection<_Mykvpair_t>::Add
		{	// add element with value _Kvpair
		insert_node(gcnew _Object_t(_Kvpair.Key, _Kvpair.Value), nullptr);
		}

	virtual void Clear_dictionary() sealed
		= System::Collections::Generic::ICollection<_Mykvpair_t>::Clear
		{	// erase all elements
		clear();
		}

	virtual bool Contains(_Mykvpair_t _Kvpair) sealed
		= System::Collections::Generic::ICollection<_Mykvpair_t>::Contains
		{	// search for element matching value _Kvpair
		_Object_t^ _Val = gcnew _Object_t(_Kvpair.Key, _Kvpair.Value);

		for (node_type^ _Node = front_node(); _Node != head_node();
			_Node = _Node->next_node())
			if (((System::Object^)_Val)->Equals(
				(System::Object^)_Node->_Value))
				return (true);
		return (false);
		}

	virtual bool Remove(_Mykvpair_t _Kvpair) sealed
		= System::Collections::Generic::ICollection<_Mykvpair_t>::Remove
		{	// remove first element matching key _Keypair
		for (node_type^ _Node = front_node(); _Node != head_node();
			_Node = _Node->next_node())
			if (((System::Object^)_Kvpair.Key)->Equals(
					(System::Object^)_Node->_Value->first)
				&& ((System::Object^)_Kvpair.Value)->Equals(
					(System::Object^)_Node->_Value->second))
				{	// found a match, remove it
				erase_node(_Node);
				return (true);
				}
		return (false);
		}

	property System::Collections::Generic::ICollection<_Key_t>^ Keys
		{	// get or set collection of keys
		virtual System::Collections::Generic::ICollection<_Key_t>^
			get() sealed
			= System::Collections::Generic::IDictionary<_Key_t, _Mapped_t>
				::Keys::get
			{	// get key elements
			System::Collections::Generic::List<_Key_t>^
				_List = gcnew System::Collections::Generic::List<_Key_t>;

			for (iterator _It = begin(); _It != end(); ++_It)
				_List->Add(_It->first);
			return (_List);
			}
		};

	property System::Collections::Generic::ICollection<_Mapped_t>^ Values
		{	// get or set collection of mapped values
		virtual System::Collections::Generic::ICollection<_Mapped_t>^
			get() sealed
			= System::Collections::Generic::IDictionary<_Key_t, _Mapped_t>
				::Values::get
			{	// get mapped elements
			System::Collections::Generic::List<_Mapped_t>^
				_List = gcnew System::Collections::Generic::List<_Mapped_t>;

			for (iterator _It = begin(); _It != end(); ++_It)
				_List->Add(_It->second);
			return (_List);
			}
		};

	virtual void Add(key_type _Keyval, mapped_type _Mappedval) sealed
		= System::Collections::Generic::IDictionary<_Key_t, _Mapped_t>
			::Add
		{	// add element with value (_Keyval, _Mappedval)
		insert_node(gcnew _Object_t(_Keyval, _Mappedval), nullptr);
		}

	virtual bool ContainsKey(key_type _Keyval) sealed
		= System::Collections::Generic::IDictionary<_Key_t, _Mapped_t>
			::ContainsKey
		{	// search for element matching key _Keyval
		return (_Mybase_t::count(_Keyval) != 0);
		}

	virtual bool Remove(key_type _Keyval) sealed
		= System::Collections::Generic::IDictionary<_Key_t, _Mapped_t>
			::Remove
		{	// remove first element matching key _Keyval
		return (_Mybase_t::erase(_Keyval) != 0);
		}

	virtual bool TryGetValue(key_type _Keyval, mapped_type% _Mappedval) sealed
		= System::Collections::Generic::IDictionary<_Key_t, _Mapped_t>
			::TryGetValue
		{	// search for element matching key _Keyval and copy mapped value
		iterator _Iter = _Mybase_t::find(_Keyval);

		if (_Iter == end())
			return (false);
		else
			{	// found, copy mapped
			_Mappedval = _Iter->second;
			return (true);
			}
		}
	};

//
// TEMPLATE CLASS hash_map_base
//
template<typename _Key_t,
	typename _Mapped_t>
	ref class hash_map_base
	:	public hash_map_base0<_Key_t, _Mapped_t>,
			System::Collections::Generic::ICollection<
				_STLCLR GenericPair<_Key_t, _Mapped_t>^>,
			System::Collections::Generic::IEnumerable<
				_STLCLR GenericPair<_Key_t, _Mapped_t>^>
	{	// hash table of unique keys + values
public:
	// types
	typedef hash_map_base<_Key_t, _Mapped_t> _Mytype_t;
	typedef hash_map_base0<_Key_t, _Mapped_t>
		_Mybase_t;
	typedef _STLCLR GenericPair<_Key_t, _Mapped_t> _Object_t;

	typedef _Key_t key_type;
	typedef _Mapped_t mapped_type;
//	typedef typename _Traits_t::value_type value_type;
//	typedef typename _Traits_t::key_compare key_compare;
//	typedef typename _Traits_t::key_compare key_compare;
//	typedef typename _Mybase_t::hasher hasher;

//	typedef int size_type;
//	typedef int difference_type;
//	typedef _Value_t value_type;
//	typedef value_type% reference;
//	typedef value_type% const_reference;

//	typedef _Mycont_it generic_container;
//	typedef value_type generic_value;

//	typedef _STLCLR GenericPair<generic_iterator^, bool> pair_iter_bool;
//	typedef _STLCLR GenericPair<generic_iterator^, generic_iterator^> pair_iter_iter;

	// basics
	hash_map_base()
		:	_Mybase_t()
		{	// construct empty hash_map from defaults
		}

	hash_map_base(hash_map_base% _Right)
		:	_Mybase_t(_Right)
		{	// construct by copying a hash_map
		}

	hash_map_base% operator=(hash_map_base% _Right)
		{	// assign

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合网色综合| 日本va欧美va瓶| 亚洲丶国产丶欧美一区二区三区| www.激情成人| 欧美在线不卡视频| 欧美日韩国产成人在线91| 欧美v日韩v国产v| 国产精品日产欧美久久久久| 亚洲一区二区三区四区的| 久久国产精品露脸对白| 粉嫩嫩av羞羞动漫久久久 | 国产suv精品一区二区三区| 成人精品一区二区三区中文字幕 | 欧美电影免费提供在线观看| 久久影视一区二区| 自拍偷自拍亚洲精品播放| 人妖欧美一区二区| jlzzjlzz欧美大全| 日韩一区二区三区在线观看| 亚洲日本在线看| 久久精品72免费观看| 91亚洲精品一区二区乱码| 日韩免费高清视频| 一区二区三区产品免费精品久久75| 日韩理论在线观看| 精品亚洲免费视频| 欧美中文一区二区三区| 久久一夜天堂av一区二区三区| 久久久亚洲午夜电影| 亚洲一区二区三区精品在线| 国产精品一区二区三区乱码 | 亚洲视频综合在线| 久久99在线观看| 欧美色网站导航| 国产婷婷精品av在线| 日本va欧美va瓶| 欧美午夜视频网站| 国产精品久久看| 国产一区二区三区电影在线观看 | 亚洲色欲色欲www在线观看| 韩国av一区二区| 欧美日韩三级在线| 国产精品电影一区二区三区| 国产精品自在在线| 欧美一卡在线观看| 亚洲一区二区三区四区在线| 99精品黄色片免费大全| 久久精品在这里| 久久99久久精品| 制服.丝袜.亚洲.中文.综合| 亚洲欧美色图小说| 成人毛片视频在线观看| 国产三级三级三级精品8ⅰ区| 1024成人网| 午夜精品久久久久久不卡8050| 亚洲欧美电影一区二区| 蜜桃av一区二区在线观看| 国产欧美精品国产国产专区| 蜜臀久久久久久久| ...xxx性欧美| 中文字幕欧美国产| 欧美日韩一区二区在线观看视频| 国产精品免费看片| 欧美亚洲国产bt| 亚洲黄色尤物视频| 欧美一级午夜免费电影| 欧美午夜寂寞影院| 波多野洁衣一区| 国产成人丝袜美腿| 亚洲自拍都市欧美小说| 成人h动漫精品一区二区| 国产精品色婷婷久久58| 麻豆一区二区在线| 91国偷自产一区二区开放时间 | 色综合婷婷久久| 欧美精品一区二区久久久| 欧美videossexotv100| 岛国av在线一区| 91丨九色丨尤物| 欧美精品在线观看一区二区| 日韩视频不卡中文| 欧美性受极品xxxx喷水| 欧美三级日韩三级| 午夜不卡av免费| 777亚洲妇女| 青青国产91久久久久久| 精品国偷自产国产一区| 国产一区不卡视频| 中文字幕成人av| 99re在线视频这里只有精品| 亚洲午夜在线电影| 91麻豆精品91久久久久同性| 老鸭窝一区二区久久精品| 久久综合一区二区| 成人免费看视频| 亚洲一区在线观看免费观看电影高清 | 久久你懂得1024| 国产成人免费视频一区| 国产精品久久久久久户外露出 | av成人老司机| 午夜视频一区在线观看| 亚洲午夜一区二区三区| 久久精品夜色噜噜亚洲a∨| 欧美变态tickling挠脚心| 欧美日本在线播放| av男人天堂一区| 精品中文字幕一区二区| 亚洲精品乱码久久久久久久久| 紧缚捆绑精品一区二区| 久久精品国产亚洲5555| 日本午夜一区二区| 一区二区三区在线影院| 国产精品久久久久久久浪潮网站| 亚洲va中文字幕| 久久精品一区二区三区不卡 | 精品国产乱码久久久久久闺蜜| 精品国产成人系列| 欧美性生活大片视频| 国产亚洲美州欧州综合国| 久久综合网色—综合色88| 国产欧美日韩亚州综合 | 91视频国产资源| 秋霞电影网一区二区| 偷窥少妇高潮呻吟av久久免费| 精品国精品国产| 91美女片黄在线观看| 精品日产卡一卡二卡麻豆| 免费在线观看不卡| 国产欧美一区二区精品仙草咪 | 99re这里只有精品6| 日本女人一区二区三区| 国产精品嫩草影院com| 91精品国产色综合久久不卡蜜臀 | 欧美高清视频在线高清观看mv色露露十八| 综合久久综合久久| 欧美一区二区在线免费播放| 成人久久18免费网站麻豆 | 色呦呦一区二区三区| 欧美日本国产一区| 国产91精品一区二区麻豆网站| 亚洲精品一区二区在线观看| 色噜噜狠狠色综合中国| 国精产品一区一区三区mba桃花| www久久精品| 欧美日韩国产免费一区二区| eeuss影院一区二区三区| 久久国内精品自在自线400部| 2024国产精品| 欧美日韩一二区| 成人av网站在线观看| 韩国在线一区二区| 日本少妇一区二区| 亚洲一区二区三区在线| 国产精品亲子乱子伦xxxx裸| 欧美成人video| 在线不卡a资源高清| 在线观看日韩高清av| av一区二区三区在线| 国产成人午夜高潮毛片| 精品一二三四区| 裸体一区二区三区| 性久久久久久久久| 亚洲综合色区另类av| 亚洲视频免费看| 综合久久综合久久| 国产精品国产三级国产三级人妇| 欧美午夜不卡在线观看免费| 99久久久久免费精品国产| 粉嫩绯色av一区二区在线观看| 亚洲情趣在线观看| 中文字幕免费一区| 亚洲精品一区二区三区四区高清| 91麻豆国产在线观看| jiyouzz国产精品久久| av亚洲精华国产精华| 99久久99久久精品国产片果冻| 一区二区三区国产精华| 一区二区在线观看免费视频播放| 91精品久久久久久蜜臀| 欧美日韩你懂得| 欧美日韩在线一区二区| 一本大道久久a久久综合婷婷| 经典三级视频一区| 精品在线一区二区| 精品中文字幕一区二区小辣椒| 亚洲自拍偷拍欧美| 亚洲一区中文日韩| 午夜精品久久久久久久99水蜜桃| 国产精品色在线观看| 国产精品久久久久一区二区三区| 欧美一区二区三区视频在线 | 亚洲色欲色欲www| 自拍偷拍亚洲激情| 一个色综合av| 丝袜美腿亚洲一区二区图片| 久久国产欧美日韩精品| 国产一区视频网站| 成人免费三级在线| 一本久久a久久精品亚洲| 色婷婷激情一区二区三区|