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

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

?? iterator

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

namespace cliext {
//
//	TEMPLATE FUNCTION _Unchecked
//
template<typename _Iter_t> inline
	_Iter_t _Unchecked(_Iter_t _Iter)
	{	// return unknown iterator unchanged
	return (_Iter);
	}

//
// TEMPLATE VALUE CLASS ConstBidirectionalIterator
//
template<typename _Cont_t>
	value class ConstBidirectionalIterator
	:	public _STLCLR Generic::IBidirectionalIterator<
			typename _Cont_t::value_type>
	{	// iterator for nonmutable bidirectional container
public:
	// types
	typedef typename _Cont_t::value_type _Value_t;
	typedef ConstBidirectionalIterator<_Cont_t> _Mytype_t;
	typedef _STLCLR Generic::IBidirectionalIterator<_Value_t> _Myiter_t;
	typedef typename _Cont_t::node_type node_type;

	typedef bidirectional_iterator_tag iterator_category;
	typedef _Value_t value_type;
	typedef int difference_type;
	typedef value_type% pointer;
	typedef value_type% reference;
	typedef value_type% const_reference;

	// constructors and special members
	ConstBidirectionalIterator(node_type^ _Node)
		:	_Mynode(_Node)
		{	// construct from node
		}

	// generic conversions
	typedef _STLCLR Generic::ConstContainerBidirectionalIterator<_Value_t>
		_Mygeniter_t;

	ConstBidirectionalIterator(_Mygeniter_t% _Right)
		:	_Mynode((node_type^)_Right.get_node())
		{	// construct by copying a generic iterator
		}

	operator _Mygeniter_t()
		{	// convert to generic iterator
		return (_Mygeniter_t(_Mynode));
		}

	// member functions
	virtual System::Object^ Clone()
		{	// return a copy
		return (gcnew ConstBidirectionalIterator(_Mynode));
		}

	int get_bias()
		{	// get offset from wrapped iterator
		return (0);
		}

	System::Object^ get_node()
		{	// get node from wrapped iterator
		return (_Mynode);
		}

	bool valid()
		{	// test if iterator valid
		return (container() != nullptr);
		}

	System::Object^ container()
		{	// return owning container
		return (_Mynode == nullptr ? nullptr : _Mynode->container());
		}

	void next()
		{	// increment
		_Mynode = _Mynode->next_node();
		}

	bool equal_to(_STLCLR Generic::IInputIterator<_Value_t>^ _Right)
		{	// test if *this == _Right
		if (container() == nullptr
			|| container() != _Right->container())
			throw gcnew System::ArgumentException();
		return (get_bias() == _Right->get_bias()
			&& get_node() == _Right->get_node());
		}

	bool equal_to(_Mytype_t% _Right)
		{	// test if *this == _Right
		if (container() == nullptr
			|| container() != _Right.container())
			throw gcnew System::ArgumentException();
		return (get_bias() == _Right.get_bias()
			&& get_node() == _Right.get_node());
		}

	const_reference get_cref()
		{	// return const reference to designated element
		return (_Mynode->_Value);
		}

	reference get_ref()
		{	// return reference to designated element
#pragma warning(push)
#pragma warning(disable: 4715)
		throw gcnew System::InvalidOperationException();
#pragma warning(pop)
		}

	void prev()
		{	// decrement
		_Mynode = _Mynode->prev_node();
		}

//	difference_type move(difference_type _Offset);
//	difference_type distance(
//		_STLCLR Generic::IRandomAccessIterator<_Value_t>^ _Right);
//	bool less_than(_STLCLR Generic::IRandomAccessIterator<_Value_t>^ _Right);

	// operators
	static const_reference operator->(
		ConstBidirectionalIterator% _Left)
		{	// return pointer to class object
		return (_Left.get_cref());
		}

	static const_reference operator*(
		ConstBidirectionalIterator% _Left)
		{	// return const reference to designated element
		return (_Left.get_cref());
		}

#pragma warning(push)
#pragma warning(disable:4460)
	static ConstBidirectionalIterator operator++(
		ConstBidirectionalIterator% _Left)
		{	// return incremented
		_Left.next();
		return (_Left);
		}
#pragma warning(pop)

	bool operator==(_STLCLR Generic::IInputIterator<_Value_t>^ _Right)
		{	// test if *this == _Right
		return (equal_to(_Right));
		}

	bool operator==(_Mytype_t% _Right)
		{	// test if *this == _Right
		return (equal_to(_Right));
		}

	bool operator!=(_STLCLR Generic::IInputIterator<_Value_t>^ _Right)
		{	// test if *this != _Right
		return (!(*this == _Right));
		}

	bool operator!=(_Mytype_t% _Right)
		{	// test if *this != _Right
		return (!(*this == _Right));
		}

#pragma warning(push)
#pragma warning(disable:4460)
	static ConstBidirectionalIterator operator--(
		ConstBidirectionalIterator% _Left)
		{	// return decremented
		_Left.prev();
		return (_Left);
		}

//	static ConstBidirectionalIterator operator+(
//		ConstBidirectionalIterator _Left,
//		difference_type _Right);
//	static ConstBidirectionalIterator operator+(
//		difference_type _Left,
//		ConstBidirectionalIterator _Right);
//	static ConstBidirectionalIterator operator-(
//		difference_type _Right);
//	difference_type operator-(ConstBidirectionalIterator _Right);
//	bool operator<(_STLCLR Generic::IBidirectionalIterator^ _Right);
//	bool operator>=(_STLCLR Generic::IBidirectionalIterator^ _Right);
//	bool operator>(_STLCLR Generic::IBidirectionalIterator^ _Right);
//	bool operator<=(_STLCLR Generic::IBidirectionalIterator^ _Right);
//	property const_reference default[difference_type];

_STLCLR_FIELD_ACCESS:
	// data members
	node_type^ _Mynode;	// node into list

private:
	virtual int get_bias_virtual() sealed
		= _Myiter_t::get_bias
		{	// get offset from wrapped iterator
		return (get_bias());
		}

	virtual System::Object^ get_node_virtual() sealed
		= _Myiter_t::get_node
		{	// get node from wrapped iterator
		return (get_node());
		}

	virtual bool valid_virtual() sealed
		= _Myiter_t::valid
		{	// test if iterator valid
		return (valid());
		}

	virtual System::Object^ container_virtual() sealed
		= _Myiter_t::container
		{	// return owning container
		return (container());
		}

	virtual void next_virtual() sealed
		= _Myiter_t::next
		{	// increment
		next();
		}

	virtual bool equal_to_virtual(
		_STLCLR Generic::IInputIterator<_Value_t>^ _Right) sealed
			= _Myiter_t::equal_to
		{	// test if *this == _Right
		return (equal_to(_Right));
		}

	virtual const_reference get_cref_virtual() sealed
		= _Myiter_t::get_cref
		{	// return const reference to designated element
		return (get_cref());
		}

	virtual reference get_ref_virtual() sealed
		= _Myiter_t::get_ref
		{	// return reference to designated element
#pragma warning(push)
#pragma warning(disable: 4715)
		throw gcnew System::InvalidOperationException();
#pragma warning(pop)
		}

	virtual void prev_virtual() sealed
		= _Myiter_t::prev
		{	// decrement
		prev();
		}

//	virtual difference_type move_virtual(difference_type _Offset);
//	virtual difference_type distance_virtual(
//		_STLCLR Generic::IRandomAccessIterator<_Value_t>^ _Right);
//	virtual bool less_than_virtual(
//		_STLCLR Generic::IRandomAccessIterator<_Value_t>^ _Right);
	};

//
// TEMPLATE VALUE CLASS ConstUncheckedBidirectionalIterator
//
template<typename _Cont_t>
	value class ConstUncheckedBidirectionalIterator
	:	public _STLCLR Generic::IBidirectionalIterator<
			typename _Cont_t::value_type>
	{	// iterator for nonmutable bidirectional container
public:
	// types
	typedef typename _Cont_t::value_type _Value_t;
	typedef ConstUncheckedBidirectionalIterator<_Cont_t> _Mytype_t;
	typedef _STLCLR Generic::IBidirectionalIterator<_Value_t> _Myiter_t;
	typedef typename _Cont_t::node_type node_type;

	typedef bidirectional_iterator_tag iterator_category;
	typedef _Value_t value_type;
	typedef int difference_type;
	typedef value_type% pointer;
	typedef value_type% reference;
	typedef value_type% const_reference;

	// constructors and special members
	ConstUncheckedBidirectionalIterator(node_type^ _Node)
		:	_Mynode(_Node)
		{	// construct from node
		}

	operator ConstBidirectionalIterator<_Cont_t>()
		{	// convert to checked iterator
		return (ConstBidirectionalIterator<_Cont_t>(_Mynode));
		}

	// generic conversions
	typedef _STLCLR Generic::ConstContainerBidirectionalIterator<_Value_t>
		_Mygeniter_t;

	ConstUncheckedBidirectionalIterator(_Mygeniter_t% _Right)
		:	_Mynode((node_type^)_Right.get_node())
		{	// construct by copying a generic iterator
		}

	operator _Mygeniter_t()
		{	// convert to generic iterator
		return (_Mygeniter_t(_Mynode));
		}

	// member functions
	virtual System::Object^ Clone()
		{	// return a copy
		return (gcnew ConstUncheckedBidirectionalIterator(_Mynode));
		}

	int get_bias()
		{	// get offset from wrapped iterator
		return (0);
		}

	System::Object^ get_node()
		{	// get node from wrapped iterator
		return (_Mynode);
		}

	bool valid()
		{	// test if iterator valid
		return (true);	// UNCHECKED
//		return (container() != nullptr);
		}

	System::Object^ container()
		{	// return owning container
		return (_Mynode->container());	// UNCHECKED
//		return (_Mynode == nullptr ? nullptr : _Mynode->container());
		}

	void next()
		{	// increment
		_Mynode = _Mynode->next_node();
		}

	bool equal_to(_STLCLR Generic::IInputIterator<_Value_t>^ _Right)
		{	// test if *this == _Right
//		if (container() == nullptr	// UNCHECKED
//			|| container() != _Right->container())
//			throw gcnew System::ArgumentException();
		return (get_bias() == _Right->get_bias()
			&& get_node() == _Right->get_node());
		}

	bool equal_to(_Mytype_t% _Right)
		{	// test if *this == _Right
//		if (container() == nullptr	// UNCHECKED
//			|| container() != _Right.container())
//			throw gcnew System::ArgumentException();
		return (get_bias() == _Right.get_bias()
			&& get_node() == _Right.get_node());
		}

	const_reference get_cref()
		{	// return const reference to designated element
		return (_Mynode->_Value);
		}

	reference get_ref()
		{	// return reference to designated element
#pragma warning(push)
#pragma warning(disable: 4715)
		throw gcnew System::InvalidOperationException();
#pragma warning(pop)
		}

	void prev()
		{	// decrement
		_Mynode = _Mynode->prev_node();
		}

//	difference_type move(difference_type _Offset);
//	difference_type distance(
//		_STLCLR Generic::IRandomAccessIterator<_Value_t>^ _Right);
//	bool less_than(_STLCLR Generic::IRandomAccessIterator<_Value_t>^ _Right);

	// operators
	static const_reference operator->(
		ConstUncheckedBidirectionalIterator% _Left)
		{	// return pointer to class object
		return (_Left.get_cref());
		}

	static const_reference operator*(
		ConstUncheckedBidirectionalIterator% _Left)
		{	// return const reference to designated element
		return (_Left.get_cref());
		}

#pragma warning(push)
#pragma warning(disable:4460)
	static ConstUncheckedBidirectionalIterator operator++(
		ConstUncheckedBidirectionalIterator% _Left)
		{	// return incremented
		_Left.next();
		return (_Left);
		}
#pragma warning(pop)

	bool operator==(_STLCLR Generic::IInputIterator<_Value_t>^ _Right)
		{	// test if *this == _Right
		return (equal_to(_Right));
		}

	bool operator==(_Mytype_t% _Right)
		{	// test if *this == _Right
		return (equal_to(_Right));
		}

	bool operator!=(_STLCLR Generic::IInputIterator<_Value_t>^ _Right)
		{	// test if *this != _Right
		return (!(*this == _Right));
		}

	bool operator!=(_Mytype_t% _Right)
		{	// test if *this != _Right
		return (!(*this == _Right));
		}

#pragma warning(push)
#pragma warning(disable:4460)
	static ConstUncheckedBidirectionalIterator operator--(
		ConstUncheckedBidirectionalIterator% _Left)
		{	// return decremented
		_Left.prev();
		return (_Left);
		}

//	static ConstUncheckedBidirectionalIterator operator+(
//		ConstUncheckedBidirectionalIterator _Left,
//		difference_type _Right);
//	static ConstUncheckedBidirectionalIterator operator+(
//		difference_type _Left,
//		ConstUncheckedBidirectionalIterator _Right);
//	static ConstUncheckedBidirectionalIterator operator-(
//		difference_type _Right);
//	difference_type operator-(ConstUncheckedBidirectionalIterator _Right);
//	bool operator<(_STLCLR Generic::IBidirectionalIterator^ _Right);
//	bool operator>=(_STLCLR Generic::IBidirectionalIterator^ _Right);
//	bool operator>(_STLCLR Generic::IBidirectionalIterator^ _Right);
//	bool operator<=(_STLCLR Generic::IBidirectionalIterator^ _Right);
//	property const_reference default[difference_type];

_STLCLR_FIELD_ACCESS:
	// data members
	node_type^ _Mynode;	// node into list

private:
	virtual int get_bias_virtual() sealed
		= _Myiter_t::get_bias
		{	// get offset from wrapped iterator
		return (get_bias());
		}

	virtual System::Object^ get_node_virtual() sealed
		= _Myiter_t::get_node
		{	// get node from wrapped iterator
		return (get_node());
		}

	virtual bool valid_virtual() sealed
		= _Myiter_t::valid
		{	// test if iterator valid
		return (valid());
		}

	virtual System::Object^ container_virtual() sealed
		= _Myiter_t::container
		{	// return owning container
		return (container());
		}

	virtual void next_virtual() sealed
		= _Myiter_t::next
		{	// increment
		next();
		}

	virtual bool equal_to_virtual(
		_STLCLR Generic::IInputIterator<_Value_t>^ _Right) sealed
			= _Myiter_t::equal_to
		{	// test if *this == _Right
		return (equal_to(_Right));

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人av一区二区| 欧美日韩高清一区二区| 99精品国产99久久久久久白柏| 五月天激情小说综合| 韩国一区二区视频| 欧美综合久久久| 国产女主播视频一区二区| 艳妇臀荡乳欲伦亚洲一区| 国产不卡视频一区| 日韩精品一区二| 午夜视黄欧洲亚洲| www.欧美精品一二区| 2024国产精品| 人人精品人人爱| 在线观看成人免费视频| 国产精品久久久久一区二区三区 | 九九视频精品免费| 色久优优欧美色久优优| 欧美激情艳妇裸体舞| 亚洲欧洲日韩av| 国产激情视频一区二区在线观看| 成人a免费在线看| 在线一区二区三区| 国产精品久久久久久福利一牛影视 | 亚洲精品久久久蜜桃| 国产69精品久久777的优势| 欧美r级在线观看| 久久机这里只有精品| 欧美久久久久久久久| 亚洲国产欧美一区二区三区丁香婷| 石原莉奈一区二区三区在线观看| 久久成人免费电影| 欧美一区二区三区人| 天天爽夜夜爽夜夜爽精品视频| 国内精品自线一区二区三区视频| 成人av电影在线观看| 欧美国产97人人爽人人喊| 国产成人免费视频| 中文字幕精品一区二区三区精品| 肉色丝袜一区二区| 欧美乱熟臀69xxxxxx| 亚洲国产欧美日韩另类综合 | 日本中文一区二区三区| 欧美精品亚洲二区| 中文字幕永久在线不卡| 成人性视频免费网站| 亚洲一区二区三区在线播放| 蜜臀99久久精品久久久久久软件| 99久久99久久免费精品蜜臀| 自拍偷拍亚洲综合| av一区二区不卡| 一二三四区精品视频| 欧美日韩精品欧美日韩精品一综合| 久久久五月婷婷| 成人午夜视频在线| 一区二区三区**美女毛片| 欧美精品免费视频| 韩国毛片一区二区三区| 亚洲国产成人在线| 在线免费观看日本欧美| 日本v片在线高清不卡在线观看| 在线免费视频一区二区| 日本不卡一区二区三区| 欧美三级在线播放| 精品一区二区久久| 欧美一区二区三区四区视频| 亚洲精品国产a久久久久久 | 日本不卡视频在线观看| 久久综合久久久久88| 成人18精品视频| 天堂成人国产精品一区| 国产日韩欧美制服另类| 欧美午夜电影在线播放| 精品一区二区在线免费观看| 一区视频在线播放| 91精品国产欧美一区二区成人 | 精品一区二区三区视频| 欧美日韩美少妇| 亚洲一区二区三区四区在线| 久久久综合激的五月天| 欧美日韩亚洲综合| 成人av网址在线| 老司机午夜精品99久久| 亚洲免费电影在线| 国产色产综合产在线视频| 欧美美女bb生活片| 无码av中文一区二区三区桃花岛| 欧美精品亚洲二区| 日韩av网站免费在线| 日韩一本二本av| 欧洲另类一二三四区| 国产成人一区在线| 极品少妇xxxx精品少妇| 亚洲国产一区视频| 亚洲精品国产无套在线观| 国产亚洲综合色| 精品国产一区久久| 欧美一区二区三区免费大片 | 久久久欧美精品sm网站| 欧美精品久久一区二区三区| 91年精品国产| 天天免费综合色| 一区二区三区蜜桃网| 国产精品视频看| 色欧美88888久久久久久影院| 亚洲国产sm捆绑调教视频| 国产精品毛片a∨一区二区三区| 色综合中文字幕国产| 免费在线欧美视频| 亚洲成av人片观看| 亚洲一区二区三区在线播放| 亚洲精品免费在线观看| 亚洲精品国产成人久久av盗摄| 欧美一级理论片| 91精品免费观看| 成人午夜在线视频| 国产a久久麻豆| 粉嫩av一区二区三区粉嫩| 国产一区二区电影| 懂色av噜噜一区二区三区av| 成人免费的视频| www.欧美色图| 在线免费观看日本一区| 欧美日韩一区高清| 粉嫩aⅴ一区二区三区四区五区 | 一区在线观看视频| 亚洲欧美偷拍三级| 欧美成人三级在线| 精品国产乱码久久久久久闺蜜| 91香蕉视频mp4| 蜜臀精品一区二区三区在线观看 | 中文字幕一区三区| 中文字幕一区二区5566日韩| 亚洲视频小说图片| 亚洲一区二区av电影| 日本中文一区二区三区| 国产高清精品网站| 91色视频在线| 欧美色综合天天久久综合精品| 成人性视频网站| 欧美在线999| 欧美一级一级性生活免费录像| 91蜜桃免费观看视频| 欧美日韩日日夜夜| 精品国产麻豆免费人成网站| 欧美精品vⅰdeose4hd| 欧美mv日韩mv| 日韩免费一区二区| 国产精品嫩草影院com| 亚洲国产日日夜夜| 国产伦精品一区二区三区视频青涩| 免费国产亚洲视频| 成人小视频免费在线观看| 欧美日本视频在线| 国产欧美精品一区aⅴ影院 | 成人av免费在线播放| 日本国产一区二区| 91在线国内视频| 欧美一级生活片| 91精品国产色综合久久不卡电影| 欧美日韩亚洲综合在线| 2017欧美狠狠色| 午夜视频在线观看一区二区三区 | 久久精品国产网站| 蜜臀av亚洲一区中文字幕| 丁香婷婷综合激情五月色| 欧美日韩在线三区| 国产精品久久久久久亚洲毛片 | 国产一区二区中文字幕| 狠狠色综合日日| 紧缚奴在线一区二区三区| 日本乱人伦一区| 国产欧美一区二区精品忘忧草| 国产日产精品1区| 日本成人在线看| 欧美中文一区二区三区| 国产精品午夜在线观看| 玖玖九九国产精品| 国产精品亚洲综合一区在线观看| 国产成人久久精品77777最新版本| 国产大片一区二区| 欧美浪妇xxxx高跟鞋交| 日韩视频在线你懂得| 夜夜亚洲天天久久| 亚洲成精国产精品女| 久久不见久久见免费视频1| 韩国午夜理伦三级不卡影院| 欧美日韩精品一二三区| 亚洲乱码日产精品bd| 国产成人在线网站| 久久九九久久九九| 久久国产精品99久久人人澡| 国产伦精品一区二区三区视频青涩 | 国产女人aaa级久久久级| 麻豆久久久久久| 日韩一区国产二区欧美三区| 天天av天天翘天天综合网色鬼国产 | 成人av午夜电影| 91精品欧美一区二区三区综合在| 欧美精品一区二|