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

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

?? list

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

namespace cliext {
	namespace impl {
//
// TEMPLATE REF CLASS list_node
//
template<typename _Value_t>
	ref class list_node
	:	public _STLCLR Generic::INode<_Value_t>
	{	// list node
public:
	typedef list_node<_Value_t> _Mytype_t;
	typedef _STLCLR Generic::INode<_Value_t> _Mynode_it;
	typedef _STLCLR Generic::IBidirectionalContainer<_Value_t> _Mycont_it;
	typedef _Value_t value_type;

	list_node(_Mycont_it^ _Owner)
		:	_Mycont(_Owner)
		{	// construct a node with defaults
		}

	_Mycont_it^ container()
		{	// return owning container
		return (_Head == nullptr ? nullptr : _Head->_Mycont);
		}

	bool is_head()
		{	// test if head node
		return (_Mycont != nullptr);
		}

	_Mytype_t^ next_node()
		{	// return successor node
		if (this == _Head || _Head == nullptr)
			throw gcnew System::InvalidOperationException();
		return (_Next);
		}

	_Mytype_t^ prev_node()
		{	// return predecessor node
		if (_Head == _Prev || _Head == nullptr)
			throw gcnew System::InvalidOperationException();
		return (_Prev);
		}

	property _Value_t% _Value
		{	// get or set _Myval
		virtual _Value_t% get()
			{	// get _Myval element
			if (this == _Head || _Head == nullptr)
				throw gcnew System::InvalidOperationException();
			return (_Myval);
			}

		virtual void set(_Value_t% _Val)
			{	// set _Myval element
			if (this == _Head || _Head == nullptr)
				throw gcnew System::InvalidOperationException();
			_Myval = _Val;
			}
		};

	// data members
	_Mycont_it^ _Mycont;	// pointer to owning list (if head node)
	_Mytype_t^ _Head;	// pointer to head node
	_Mytype_t^ _Next;	// pointer to successor node
	_Mytype_t^ _Prev;	// pointer to predecessor node
	value_type _Myval;	// the stored value (if not head node)

private:
	virtual _Mycont_it^ container_virtual() sealed
		= _Mynode_it::container
		{	// return owning container
		return (container());
		}

	virtual bool is_head_virtual() sealed
		= _Mynode_it::is_head
		{	// test if head node
		return (is_head());
		}

	virtual _Mynode_it^ next_node_virtual() sealed
		= _Mynode_it::next_node
		{	// return successor node
		return (next_node());
		}

	virtual _Mynode_it^ prev_node_virtual() sealed
		= _Mynode_it::prev_node
		{	// return predecessor node
		return (prev_node());
		}
	};

//
// TEMPLATE REF CLASS list_impl
//
template<typename _Value_t,
	bool _Is_ref>
	ref class list_impl
	:	public _STLCLR IList<_Value_t>
	{	// bidirectional linked list of elements
public:
	// types
	typedef list_impl<_Value_t, _Is_ref> _Mytype_t;
	typedef _STLCLR IList<_Value_t> _Mycont_it;
	typedef list_node<_Value_t> _Mynode_t;
	typedef cli::array<_Value_t> _Myarray_t;
	typedef System::Collections::Generic::IEnumerable<_Value_t> _Myenum_it;
	typedef _Cont_make_value<_Value_t, _Is_ref> _Mymake_t;

	typedef list_node<_Value_t> node_type;

	typedef BidirectionalIterator<_Mytype_t>
		iterator;
	typedef ConstBidirectionalIterator<_Mytype_t>
		const_iterator;
	typedef ReverseBidirectionalIterator<_Mytype_t>
		reverse_iterator;
	typedef ReverseBidirectionalIterator<_Mytype_t>
		const_reverse_iterator;

	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 Generic::ContainerBidirectionalIterator<_Value_t>
		generic_iterator;
	typedef _STLCLR Generic::ReverseBidirectionalIterator<_Value_t>
		generic_reverse_iterator;

	typedef _STLCLR BinaryDelegate<value_type, value_type, bool>
		_Valcomp_dt;
	typedef _STLCLR UnaryDelegate<value_type, bool> _Valtest_dt;

	// constants
	static const int _Maxsize = MAX_CONTAINER_SIZE;

	// basics
	list_impl()
		:	_Mysize(0), _Mygen(0)
		{	// construct empty list
		_Myhead = _Buynode();
		}

	list_impl% operator=(list_impl% _Right)
		{	// assign
		if ((Object^)this != %_Right)
			{	// worth doing, do it
			clear();
			insert_node(head_node(),
				_Right.front_node(), _Right.head_node());
			}
		return (*this);
		}

	// constructors
	list_impl(_Mytype_t% _Right)
		:	_Mysize(0), _Mygen(0)
		{	// construct by copying _Right
		_Myhead = _Buynode();
		insert_node(head_node(), _Right.front_node(), _Right.head_node());
		}

	explicit list_impl(size_type _Count)
		:	_Mysize(0), _Mygen(0)
		{	// construct from _Count * value_type()
		_Myhead = _Buynode();
		insert_node(head_node(), _Count, value_type());
		}

	list_impl(size_type _Count, value_type _Val)
		:	_Mysize(0), _Mygen(0)
		{	// construct from _Count * _Val
		_Myhead = _Buynode();
		insert_node(head_node(), _Count, _Val);
		}

	template<typename _InIt_t>
		list_impl(_InIt_t _First, _InIt_t _Last)
		:	_Mysize(0), _Mygen(0)
		{	// construct from [_First, _Last)
		_Myhead = _Buynode();
		_Construct(_First, _Last, _Iter_category(_First));
		}

	template<typename _InIt_t>
		void _Construct(_InIt_t _Count, _InIt_t _Val,
			_Int_iterator_tag%)
		{	// initialize with _Count * _Val
		insert_node(head_node(), (size_type)_Count, (value_type)_Val);
		}

	template<typename _InIt_t>
		void _Construct(_InIt_t _First, _InIt_t _Last,
			input_iterator_tag%)
		{	// initialize with [_First, _Last), input iterators
		for (; _First != _Last; ++_First)
			push_back((value_type)*_First);
		}

	template<typename _InIt_t>
		void _Construct(_InIt_t _First, _InIt_t _Last,
			random_access_iterator_tag%)
		{	// initialize with [_First, _Last), random-access iterators
		if (_Last < _First)
			throw gcnew System::ArgumentOutOfRangeException();
		for (; _First != _Last; ++_First)
			push_back((value_type)*_First);
		}

	list_impl(_Myenum_it^ _Right)
		:	_Mysize(0), _Mygen(0)
		{	// initialize with enumeration
		_Myhead = _Buynode();
		for each (value_type _Val in _Right)
			push_back(_Val);
		}

	// destructor
	~list_impl()
		{	// destroy the object
		clear();
		_Myhead = nullptr;
		_Mysize = 0;
		++_Mygen;
		}

	// accessors
	unsigned long get_generation()
		{	// get underlying container generation
		return (_Mygen);
		}

	node_type^ get_node(iterator _Where)
		{	// get node from valid iterator
		node_type^ _Node = (node_type^)_Where.get_node();

		if (_Node->container() != (System::Object^)this)
			throw gcnew System::InvalidOperationException();
		return (_Node);
		}

	node_type^ front_node()
		{	// return leftmost node in tree
		return (head_node()->_Next);	// avoid usual check
		}

	node_type^ back_node()
		{	// return rightmost node in tree
		return (head_node()->_Prev);	// avoid usual check
		}

	node_type^ head_node()
		{	// get head node
		return (_Myhead);
		}

//	property reference default[/* size_type */];

	property value_type front_item
		{	// get or set first element
		virtual value_type get()
			{	// get first element
			return (front());
			}

		virtual void set(value_type _Val)
			{	// set first element
			front() = _Mymake_t::make_value(_Val);
			}
		};

	property value_type back_item
		{	// get or set last element
		virtual value_type get()
			{	// get last element
			return (back());
			}

		virtual void set(value_type _Val)
			{	// set last element
			back() = _Mymake_t::make_value(_Val);
			}
		};

	reference front()
		{	// get first element of mutable sequence
		if (empty())
			throw gcnew System::NullReferenceException();
		return (front_node()->_Myval);
		}

	reference back()
		{	// get last element of mutable sequence
		if (empty())
			throw gcnew System::NullReferenceException();
		return (back_node()->_Myval);
		}

	// converters
	_Myarray_t^ to_array()
		{	// convert to array
		_Myarray_t^ _Ans = gcnew _Myarray_t(size());
		node_type^ _Node = head_node();

		for (int _Idx = size(); 0 <= --_Idx; )
			{	// copy back to front
			_Node = _Node->prev_node();
			_Ans[_Idx] = _Mymake_t::make_value(_Node->_Myval);
			}
		return (_Ans);
		}

	// iterator generators
	iterator make_iterator(node_type^ _Node)
		{	// return iterator for node
		return (iterator(_Node));
		}

	iterator begin()
		{	// return iterator for beginning of mutable sequence
		return (make_iterator(front_node()));
		}

	iterator end()
		{	// return iterator for end of mutable sequence
		return (make_iterator(head_node()));
		}

	reverse_iterator rbegin()
		{	// return reverse iterator for beginning of mutable sequence
		return (reverse_iterator(end()));
		}

	reverse_iterator rend()
		{	// return reverse iterator for end of mutable sequence
		return (reverse_iterator(begin()));
		}

	// size controllers
//	void reserve(size_type _Capacity);
//	size_type capacity();

	virtual void resize(size_type _Newsize)
		{	// determine new length, padding with value_type elements
		resize(_Newsize, value_type());
		}

	void resize(size_type _Newsize, value_type _Val)
		{	// determine new length, padding with _Val elements
		if (_Newsize < 0)
			throw gcnew System::ArgumentOutOfRangeException();

		if (size() < _Newsize)
			insert_node(head_node(), _Newsize - size(), _Val);
		else
			for (; _Newsize < size(); )
				pop_back();	// discard from end
		}

	size_type size()
		{	// return length of sequence
		return (_Mysize);
		}

	bool empty()
		{	// test if sequence is empty
		return (size() == 0);
		}

	// mutators
	void push_front(value_type _Val)
		{	// insert element at beginning
		insert_node(front_node(), 1, _Val);
		}

	void pop_front()
		{	// erase element at beginning
		if (empty())
			throw gcnew System::InvalidOperationException();
		erase_node(front_node());	// discard from beginning
		}

	void push_back(value_type _Val)
		{	// insert element at end
		insert_node(head_node(), 1, _Val);
		}

	void pop_back()
		{	// erase element at end
		if (empty())
			throw gcnew System::InvalidOperationException();
		erase_node(back_node());	// discard from end
		}

	void assign(size_type _Count, value_type _Val)
		{	// assign _Count * _Val
		clear();
		insert_node(head_node(), _Count, _Val);
		}

	void assign(_STLCLR Generic::IInputIterator<_Value_t>^ _First,
		_STLCLR Generic::IInputIterator<_Value_t>^ _Last)
		{	// assign [_First, _Last)
		if (_First->container() != this)
			clear();

		size_type _Oldsize = size();

		_Insert_safe(front_node(), _First, _Last);
		for (; 0 < _Oldsize; --_Oldsize)
			pop_back();	// discard old stuff
		}

	void assign(_Myenum_it^ _Right)
		{	// initialize with enumeration
		node_type^ _Oldfirst = front_node();

		try
			{	// try to build insert list
			for each (value_type _Val in _Right)
				insert_node(_Oldfirst,	// insert new at beginning
					1, _Val);
			}
		catch (System::Object^)
			{	// failed, discard new stuff
			for (; front_node() != _Oldfirst; )
				pop_front();
			throw;
			}
		for (; _Oldfirst != head_node(); )
			_Oldfirst = erase_node(_Oldfirst);	// discard old stuff
		}

	void assign(System::Collections::IEnumerable^ _Right)
		{	// initialize with enumeration
		node_type^ _Oldfirst = front_node();

		try
			{	// try to build insert list
			for each (value_type _Val in _Right)
				insert_node(_Oldfirst,	// insert new at beginning
					1, _Val);
			}
		catch (System::Object^)
			{	// failed, discard new stuff
			for (; front_node() != _Oldfirst; )
				pop_front();
			throw;
			}
		for (; _Oldfirst != head_node(); )
			_Oldfirst = erase_node(_Oldfirst);	// discard old stuff
		}

	iterator insert(iterator _Where, value_type _Val)
		{	// insert _Val at _Where
		insert_node(get_node(_Where), 1, _Val);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩一区二区三区免费看| 欧美日韩亚洲高清一区二区| 精品在线免费观看| 国产98色在线|日韩| 91久久精品网| 日韩女优制服丝袜电影| 国产精品久久午夜| 成人福利视频在线看| 欧美日韩你懂得| 中文字幕一区三区| 国产精品免费久久| 午夜久久久久久久久久一区二区| 精品一区二区日韩| 欧美日本国产视频| 亚洲欧美激情在线| 国产精华液一区二区三区| 欧美日韩国产在线观看| 欧美高清一级片在线观看| 免费看欧美女人艹b| 在线观看一区日韩| 亚洲视频免费观看| 国产成人aaa| 久久久www成人免费毛片麻豆 | 成人激情校园春色| 久久综合九色综合欧美就去吻| 亚洲观看高清完整版在线观看| 不卡影院免费观看| 五月天视频一区| 色综合天天综合色综合av| 国产日韩欧美综合在线| 国产精品自拍一区| 久久久精品蜜桃| 9色porny自拍视频一区二区| 国产精品人成在线观看免费 | 精品日韩一区二区三区| 美国av一区二区| 久久久久久97三级| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 91久久一区二区| 亚洲欧美日韩国产成人精品影院| 成人晚上爱看视频| 亚洲女人****多毛耸耸8| 精品婷婷伊人一区三区三| 岛国av在线一区| 国产精品一区免费在线观看| 日韩欧美视频一区| 9久草视频在线视频精品| 亚洲午夜影视影院在线观看| 欧美一区二区在线视频| 国产成人午夜高潮毛片| 亚洲精品国产无套在线观| 欧美精品第1页| 成人黄页毛片网站| 日韩二区三区四区| 自拍偷拍国产亚洲| 精品1区2区在线观看| 在线观看日韩国产| 欧美亚洲日本一区| 国产91丝袜在线播放| 亚洲成人精品一区| 亚洲欧美日韩国产一区二区三区| 精品三级在线看| 免费观看在线色综合| 加勒比av一区二区| 亚洲一区二区视频在线| 国产精品免费网站在线观看| 欧美一区二区三区在线观看| 在线观看亚洲精品视频| 国产成人免费av在线| 久久精品999| 蜜臀av性久久久久蜜臀aⅴ| 亚洲一卡二卡三卡四卡无卡久久| 精品成人一区二区| 精品国产区一区| 日韩美女在线视频| 日韩一区二区三| 日韩视频永久免费| 国产人成亚洲第一网站在线播放 | 成人av一区二区三区| 国产精品69久久久久水密桃| 麻豆91精品视频| 久久99精品视频| 国产一区二区免费在线| 国产精品一区免费视频| 粉嫩高潮美女一区二区三区| 国产成人免费视频网站高清观看视频 | 午夜伊人狠狠久久| 亚洲成va人在线观看| 欧美aa在线视频| 狠狠v欧美v日韩v亚洲ⅴ| 国产精品1区2区3区| 91色在线porny| 日韩亚洲欧美成人一区| 中文字幕电影一区| 亚洲成a天堂v人片| 国产成人鲁色资源国产91色综| 一本久久a久久精品亚洲| 欧美裸体一区二区三区| 国产亚洲精品超碰| 亚洲视频 欧洲视频| 精品亚洲成av人在线观看| 成人综合在线观看| 日韩欧美国产一区二区三区| 中文字幕精品一区二区精品绿巨人| 亚洲一区在线观看免费观看电影高清 | 午夜欧美一区二区三区在线播放 | 国产精品美女久久久久久久久久久| 亚洲天堂中文字幕| 狠狠色2019综合网| 4438成人网| 一区二区三区四区国产精品| 国产乱子伦一区二区三区国色天香 | 91行情网站电视在线观看高清版| 日韩你懂的在线播放| 午夜欧美视频在线观看| 日本乱人伦aⅴ精品| 中文字幕免费不卡在线| 成人午夜电影网站| 亚洲国产精华液网站w | 国产日韩精品一区二区浪潮av | 欧美亚洲日本一区| 国产精品视频线看| 日韩一区二区免费在线观看| 亚洲成人激情社区| 91精品国产91热久久久做人人| 亚洲卡通欧美制服中文| 色悠悠久久综合| 亚洲大片一区二区三区| 日韩一区和二区| 美女免费视频一区| 欧美国产日韩精品免费观看| 高清国产一区二区| 中文字幕一区在线观看| 欧美日韩在线综合| 久久99精品久久久久| 日韩美女啊v在线免费观看| 91视频com| 国产精品一区三区| 亚洲免费高清视频在线| 91精品婷婷国产综合久久| 国产精品一区二区男女羞羞无遮挡| 日韩美女天天操| 91久久精品国产91性色tv| 五月天婷婷综合| 亚洲人一二三区| 国产精品国产三级国产| 日韩女同互慰一区二区| 成人av资源站| 激情综合亚洲精品| 亚洲成av人片一区二区梦乃| 国产亚洲欧美色| 91精品国产91久久综合桃花 | 中文字幕精品在线不卡| 日韩一区二区精品| 在线视频中文字幕一区二区| 国产福利一区二区三区视频在线| 亚洲精品亚洲人成人网| 国产精品人人做人人爽人人添| 日韩亚洲国产中文字幕欧美| 精品污污网站免费看| 精品视频1区2区3区| 在线观看三级视频欧美| 一本色道综合亚洲| 欧洲一区在线电影| 日本韩国精品在线| 欧美日韩视频在线观看一区二区三区| 成人av在线看| 一本色道久久综合精品竹菊| 色哟哟国产精品| 欧美日韩一级视频| 欧美亚洲图片小说| 日韩一区二区中文字幕| 88在线观看91蜜桃国自产| 欧美日本乱大交xxxxx| 欧美群妇大交群的观看方式| 欧美一区二区三区公司| 精品国产一区二区三区不卡| 日韩美一区二区三区| 中文字幕不卡在线观看| 亚洲欧美色一区| 捆绑调教一区二区三区| 国产专区综合网| 在线观看91精品国产入口| 69久久99精品久久久久婷婷 | 美女爽到高潮91| 国产成人精品aa毛片| 欧美最猛黑人xxxxx猛交| 在线不卡欧美精品一区二区三区| 日韩欧美专区在线| 国产精品嫩草影院com| 日韩国产精品久久久| 国产精品99久久久久久宅男| 色婷婷久久久综合中文字幕| 91精品国产色综合久久久蜜香臀| 国产精品情趣视频| 蜜臀久久99精品久久久久宅男 | 亚洲国产经典视频| 蜜臀av性久久久久蜜臀aⅴ流畅 | 国产一区二区三区精品欧美日韩一区二区三区| 欧美在线观看视频在线|