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

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

?? memory

?? C語言庫函數的原型,有用的拿去
??
?? 第 1 頁 / 共 2 頁
字號:
// memory stl/clr header
#ifndef _CLI_MEMORY_
#define _CLI_MEMORY_
#include <cliext/iterator>
#include <cliext/utility>	// for pair

#ifdef _M_CEE_SAFE
 #define _PAIR_TYPE(iter_t)	cliext::pair<iter_t, iter_t>	// iterator pair
 #define _PAIR_TYPE2(iter1_t, iter2_t)	\
	cliext::pair<iter1_t, iter2_t>	// iterator pair

 #define _STLCLRDB_ERROR(mesg)
 #define _STLCLRDB_LT(left, right)	((left) < (right))
 #define _STLCLRDB_LT_PRED(pred, left, right)	((pred)(left, right))

 #define _STLCLRDB_POINTER(first)

 #define _STLCLRDB_ORDER(first, last)
 #define _STLCLRDB_ORDER_PRED(first, last, pred)

 #define _STLCLRDB_RANGE(first, last)

#else /* _M_CEE_SAFE */
 #include <climits>	// for CHAR_MAX, UCHAR_MAX
 #include <cstddef>	// for ptrdiff_t, size_t
 #include <cstring>	// form mem* functions
 #include <new>		// for placement new
 #include <utility>	// for std::pair
 #include <xutility>	// for CHAR_MAX, UCHAR_MAX, iterator debugging

 #define _PAIR_TYPE(iter_t) typename cliext::_Pick_pair< \
	__is_value_class(iter_t) || __is_ref_class(iter_t), \
	iter_t, iter_t>::value_type
 #define _PAIR_TYPE2(iter1_t, iter2_t) typename cliext::_Pick_pair< \
	__is_value_class(iter1_t) || __is_ref_class(iter1_t), \
	iter1_t, iter2_t>::value_type	// both managed or both unmanaged

namespace cliext {
template<bool _Is_managed,
	typename _Value1_t,
	typename _Value2_t>
	class _Pick_pair;	// select managed or unmanaged type

template<typename _Value1_t,
	typename _Value2_t>
	class _Pick_pair<false, _Value1_t, _Value2_t>
	{	// define unmanaged type
public:
	typedef std::pair<_Value1_t, _Value2_t> value_type;
	};

template<typename _Value1_t,
	typename _Value2_t>
	class _Pick_pair<true, _Value1_t, _Value2_t>
	{	// define managed type
public:
	typedef cliext::pair<_Value1_t, _Value2_t> value_type;
	};
}	// namespace cliext

 #if _HAS_ITERATOR_DEBUGGING
  #ifndef _STLCLRDB_REPORT
   #define _STLCLRDB_REPORT(mesg, file, line)	\
	std::_Debug_message(mesg, file, line)
 #endif /* _STLCLRDB_REPORT */

  #define _STLCLRDB_ERROR(mesg)	\
	_STLCLRDB_REPORT(mesg, __FILEW__, __LINE__)

  #define _STLCLRDB_LT(left, right)	\
	cliext::_Stlclrdb_lt(left, right, __FILEW__, __LINE__)
  #define _STLCLRDB_LT_PRED(pred, left, right)	\
	cliext::_Stlclrdb_lt_pred(pred, left, right, __FILEW__, __LINE__)

  #define _STLCLRDB_POINTER(first)	\
	cliext::_Stlclrdb_pointer(first, __FILEW__, __LINE__)
  #define _STLCLRDB_POINTER2(first, filew, line)	\
	cliext::_Stlclrdb_pointer(first, filew, line)

  #define _STLCLRDB_ORDER(first, last)	\
	cliext::_Stlclrdb_order(first, last, __FILEW__, __LINE__)
  #define _STLCLRDB_ORDER_PRED(first, last, pred)	\
	cliext::_Stlclrdb_order(first, last, pred, __FILEW__, __LINE__)

  #define _STLCLRDB_RANGE(first, last)	\
	cliext::_Stlclrdb_range(first, last,  __FILEW__, __LINE__)
  #define _STLCLRDB_RANGE2(first, last, filew, line)	\
	cliext::_Stlclrdb_range(first, last, filew, line)

namespace cliext {
template<class _Ty1, class _Ty2> inline
	bool _Stlclrdb_lt(_Ty1% _Left, _Ty2% _Right,
		const wchar_t *_File, unsigned int _Line)
	{	// test if _Left < _Right and operator< is strict weak ordering
	if (!(_Left < _Right))
		return (false);
	else if (_Right < _Left)
		_STLCLRDB_REPORT(L"invalid operator<", _File, _Line);
	return (true);
	}

template<class _Pr, class _Ty1, class _Ty2> inline
	bool _Stlclrdb_lt_pred(_Pr _Pred, _Ty1% _Left, _Ty2% _Right,
		const wchar_t *_File, unsigned int _Line)
	{	// test if _Pred(_Left, _Right) and _Pred is strict weak ordering
	if (!_Pred(_Left, _Right))
		return (false);
	else if (_Pred(_Right, _Left))
		_STLCLRDB_REPORT(L"invalid operator<", _File, _Line);
	return (true);
	}

		// TEMPLATE FUNCTION _Stlclrdb_pointer
template<class _InIt> inline
	void _Stlclrdb_pointer(_InIt%, const wchar_t *, unsigned int)
	{	// test pointer for non-singularity, arbitrary type
	}

template<class _Ty> inline
	void _Stlclrdb_pointer(const _Ty *_First, const wchar_t *_File,
		unsigned int _Line)
	{	// test iterator for non-singularity, const pointers
	if (_First == 0)
		_STLCLRDB_REPORT(L"invalid null pointer", _File, _Line);
	}

template<class _Ty> inline
	void _Stlclrdb_pointer(_Ty *_First, const wchar_t *_File,
		unsigned int _Line)
	{	// test iterator for non-singularity, pointers
	if (_First == 0)
		_STLCLRDB_REPORT(L"invalid null pointer", _File, _Line);
	}

		// TEMPLATE FUNCTION _Stlclrdb_order
template<class _InIt> inline
	void _Stlclrdb_order2(_InIt _First, _InIt _Last,
		const wchar_t *_File, unsigned int _Line, input_iterator_tag)
	{	// test if range is ordered by operator<, input iterators
	}

template<class _FwdIt> inline
	void _Stlclrdb_order2(_FwdIt _First, _FwdIt _Last,
		const wchar_t *_File, unsigned int _Line, forward_iterator_tag)
	{	// test if range is ordered by operator<, forward iterators
	for (_FwdIt _Next = _First; _First != _Last && ++_Next != _Last; ++_First)
		if (_STLCLRDB_LT(*_Next, *_First))
			_STLCLRDB_REPORT(L"sequence not ordered", _File, _Line);
	}

template<class _InIt> inline
	void _Stlclrdb_order(_InIt _First, _InIt _Last,
		const wchar_t *_File, unsigned int _Line)
	{	// test is range is ordered by operator<
	_STLCLRDB_RANGE2(_First, _Last, _File, _Line);
	_Stlclrdb_order2(_First, _Last, _File, _Line, _Iter_category(_First));
	}

		// TEMPLATE FUNCTION _Stlclrdb_order WITH PRED
template<class _InIt,
	class _Pr> inline
	void _Stlclrdb_order2(_InIt _First, _InIt _Last, _Pr _Pred,
		const wchar_t *_File, unsigned int _Line, input_iterator_tag)
	{	// test if range is ordered by predicate, input iterators
	}

template<class _FwdIt,
	class _Pr> inline
	void _Stlclrdb_order2(_FwdIt _First, _FwdIt _Last, _Pr _Pred,
		const wchar_t *_File, unsigned int _Line, forward_iterator_tag)
	{	// test if range is ordered by predicate, forward iterators
	for (_FwdIt _Next = _First; _First != _Last && ++_Next != _Last; ++_First)
		if (_STLCLRDB_LT_PRED(_Pred, *_Next, *_First))
			_STLCLRDB_REPORT(L"sequence not ordered", _File, _Line);
	}

template<class _InIt,
	class _Pr> inline
	void _Stlclrdb_order(_InIt _First, _InIt _Last, _Pr _Pred,
		const wchar_t *_File, unsigned int _Line)
	{	// test if range is ordered by predicate
	_STLCLRDB_RANGE2(_First, _Last, _File, _Line);
	_STLCLRDB_POINTER2(_Pred, _File, _Line);
	_Stlclrdb_order2(_First, _Last, _Pred, _File, _Line,
		_Iter_category(_First));
	}

		// TEMPLATE FUNCTION _Stlclrdb_range
template<class _InIt> inline
	void _Stlclrdb_range2(_InIt, _InIt,
		const wchar_t *, unsigned int, input_iterator_tag)
	{	// test iterator pair for valid range, arbitrary iterators
	}

template<class _RanIt> inline
	void _Stlclrdb_range2(_RanIt _First, _RanIt _Last,
		const wchar_t *_Filew, unsigned int _Line,
		random_access_iterator_tag)
	{	// test iterator pair for valid range, random-access iterators
	if (_First != _Last)
		{	// check for non-null pointers, valid range
		_STLCLRDB_POINTER2(_First, _Filew, _Line);
		_STLCLRDB_POINTER2(_Last, _Filew, _Line);
		if (_Last < _First)
			_STLCLRDB_REPORT(L"invalid iterator range", _Filew, _Line);
		}
	}

template<class _InIt> inline
	void _Stlclrdb_range(_InIt _First, _InIt _Last,
		const wchar_t *_Filew, unsigned int _Line)
	{	// test iterator pair for valid range
	_Stlclrdb_range2(_First, _Last, _Filew, _Line, _Iter_category(_First));
	}
} // namespace cliext

 #else /* _HAS_ITERATOR_DEBUGGING */
  #define _STLCLRDB_LT(left, right)	((left) < (right))
  #define _STLCLRDB_LT_PRED(pred, left, right)	((pred)(left, right))

  #define _STLCLRDB_POINTER(first)

  #define _STLCLRDB_ORDER(first, last)
  #define _STLCLRDB_ORDER_PRED(first, last, pred)

  #define _STLCLRDB_RANGE(first, last)
 #endif /* _HAS_ITERATOR_DEBUGGING */
#endif /* _M_CEE_SAFE */

namespace cliext {
//
// UN/MANAGED TEMP BUFFER SELECTOR
//
template<typename _Value_t>
	value class _Temp_gc_iterator;

template<typename _Value_t>
	class _Temp_iterator;

#ifdef _M_CEE_SAFE
 #define _TEMP_ITER(iter_t, value_t) _Temp_gc_iterator<value_t>

#else /* _M_CEE_SAFE */
 #define _TEMP_ITER(iter_t, value_t) typename cliext::_Pick_tbuf< \
	__is_value_class(iter_t) || __is_ref_class(iter_t), value_t>::value_type

template<bool _Is_managed,
	typename _Value_t>
	class _Pick_tbuf;	// select managed or unmanaged type

template<typename _Value_t>
	class _Pick_tbuf<false, _Value_t>
	{	// define unmanaged type
public:
	typedef cliext::_Temp_iterator<_Value_t> value_type;
	};

template<typename _Value_t>
	class _Pick_tbuf<true, _Value_t>
	{	// define managed type
public:
	typedef cliext::_Temp_gc_iterator<_Value_t> value_type;
	};

		// TEMPLATE FUNCTION get_temporary_buffer
template<class _Ty> inline
	pair<_Ty *, std::ptrdiff_t>
		get_temporary_buffer(std::ptrdiff_t _Count)
	{	// get raw temporary buffer of up to _Count elements
	_Ty *_Pbuf;

	if (_Count < 0)
		_Count = 0;
	for (_Pbuf = 0; 0 < _Count; _Count /= 2)
		try
			{	// try to allocate storage
			_Pbuf = (_Ty *)::operator new(_Count * sizeof (_Ty));
			break;
			}
		catch (...)
			{	// loop if new fails
			}

	return (pair<_Ty *, std::ptrdiff_t>(_Pbuf, _Count));
	}

		// TEMPLATE FUNCTION return_temporary_buffer
template<class _Ty> inline
	void return_temporary_buffer(_Ty *_Pbuf)
	{	// delete raw temporary buffer
	::operator delete(_Pbuf);
	}

		// TEMPLATE CLASS _Temp_iterator
template<class _Ty>
	class _Temp_iterator
	{	// wrap stores to unmanaged temporary buffer as output iterator
public:
	typedef _Temp_iterator<_Ty> _Mytype_t;
	typedef _Ty *_Pty;
	typedef output_iterator_tag iterator_category;

	_Temp_iterator(std::ptrdiff_t _Count = 0)
		{	// construct from desired temporary buffer size
		_Buf._Begin = 0;
		_Buf._Current = 0;
		_Buf._Hiwater = 0;
		_Buf._Size = _Count;	// memorize size for lazy allocation
		_Pbuf = &_Buf;
		}

	_Temp_iterator(const _Temp_iterator& _Right)
		{	// construct from _Right (share active buffer)
		_Buf._Begin = 0;	// clear stored buffer, for safe destruction
		_Buf._Current = 0;
		_Buf._Hiwater = 0;
		_Buf._Size = 0;
		*this = _Right;
		}

	~_Temp_iterator()
		{	// destroy the object
		if (_Buf._Begin != 0)
			{	// destroy any constructed elements in buffer
			for (_Pty _Next = _Buf._Begin;
				_Next != _Buf._Hiwater; ++_Next)
				_Next->~_Ty();
			return_temporary_buffer(_Buf._Begin);
			}
		}

	_Temp_iterator& operator=(const _Temp_iterator& _Right)
		{	// assign _Right (share active buffer)
		_Pbuf = _Right._Pbuf;
		return (*this);
		}

	_Temp_iterator& operator=(_Ty& _Val)
		{	// assign or construct value into active buffer, and increment
		if (_Pbuf->_Current < _Pbuf->_Hiwater)
			*_Pbuf->_Current++ = _Val;	// below high water mark, assign
		else
			{	// above high water mark, construct
			_Pty _Ptr = &*_Pbuf->_Current;
			::new (_Ptr) _Ty(_Val);
			_Pbuf->_Hiwater = ++_Pbuf->_Current;
			}
		return (*this);
		}

	_Temp_iterator& operator*()
		{	// pretend to return designated value
		return (*this);
		}

	_Temp_iterator& operator++()
		{	// pretend to preincrement
		return (*this);
		}

	_Temp_iterator& operator++(int)
		{	// pretend to postincrement
		return (*this);
		}

	_Temp_iterator& _Init()
		{	// set pointer at beginning of buffer
		_Pbuf->_Current = _Pbuf->_Begin;
		return (*this);
		}

	_Pty _First() const
		{	// return pointer to beginning of buffer
		return (_Pbuf->_Begin);
		}

	_Pty _Last() const
		{	// return pointer past end of buffer contents
		return (_Pbuf->_Current);
		}

	std::ptrdiff_t _Maxlen()
		{	// return size of buffer
		if (_Pbuf->_Begin == 0 && 0 < _Pbuf->_Size)
			{	// allocate buffer on first size query
			pair<_Pty, std::ptrdiff_t> _Pair =
				get_temporary_buffer<_Ty>(_Pbuf->_Size);

			_Pbuf->_Begin = _Pair.first;
			_Pbuf->_Current = _Pair.first;
			_Pbuf->_Hiwater = _Pair.first;
			_Pbuf->_Size = _Pair.second;
			}
		return (_Pbuf->_Size);
		}

//_STLCLR_FIELD_ACCESS:
	struct _Bufpar
		{	// control information for a temporary buffer
		_Pty _Begin;	// pointer to beginning of buffer
		_Pty _Current;	// pointer to next available element
		_Pty _Hiwater;	// pointer to first unconstructed element
		std::ptrdiff_t _Size;	// length of buffer
		};

	_Bufpar _Buf;	// buffer control stored in iterator
	_Bufpar *_Pbuf;	// pointer to active buffer control
	};
#endif /* _M_CEE_SAFE */

		// TEMPLATE CLASS _Temp_gc_iterator
template<class _Ty>
	value class _Temp_gc_iterator
	{	// wrap stores to managed temporary buffer as output iterator
public:
	typedef _Temp_gc_iterator<_Ty> _Mytype_t;
	typedef cli::array<_Ty> _Myarray_t;
	typedef ArrayContainer<_Ty> _Mycont_t;
	typedef typename _Mycont_t::iterator iterator;

	_Temp_gc_iterator(int _Count)
		:	_Mysize(_Count), _Mycont(nullptr), _Next(nullptr)
		{	// construct from desired temporary buffer size
		}

	static _Ty% operator*(_Temp_gc_iterator% _Left)
		{	// return designated value
		return (_Left._Next->get_ref());
		}

	_Temp_gc_iterator operator++()
		{	// preincrement
		_Next->next();
		return (*this);
		}

	iterator operator++(int)
		{	// postincrement
		iterator _Temp = *_Next;

		_Next->next();
		return (_Temp);
		}

	_Temp_gc_iterator _Init()
		{	// set pointer at beginning of buffer
		*_Next = _Mycont->begin();
		return (*this);
		}

	iterator _First()
		{	// return pointer to beginning of buffer
		return (_Mycont->begin());
		}

	iterator _Last()
		{	// return pointer past end of buffer contents
		return (*_Next);
		}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线免费观看成人短视频| 亚洲国产日韩精品| 亚洲靠逼com| 美国欧美日韩国产在线播放| 国产成人在线视频播放| av男人天堂一区| 在线播放一区二区三区| 国产欧美一区二区精品性色超碰| 亚洲免费在线看| 精品亚洲国内自在自线福利| 99国产精品久久久| 久久久久九九视频| 亚洲成人在线观看视频| 国产91精品欧美| 欧美大胆人体bbbb| 亚洲一级电影视频| 国产成人一级电影| 日韩手机在线导航| 亚洲一级二级三级在线免费观看| 国产成人精品影院| 精品久久久久一区二区国产| 亚洲成av人片www| 日本一区二区久久| 国产成人精品影视| 久久人人97超碰com| 麻豆91在线播放| 欧美一区二区三区啪啪| 调教+趴+乳夹+国产+精品| 在线一区二区三区四区五区| 欧美激情中文不卡| 国产999精品久久久久久绿帽| 欧美电影免费观看高清完整版| 一个色在线综合| 91亚洲午夜精品久久久久久| 国产视频一区不卡| 粉嫩在线一区二区三区视频| www成人在线观看| 国产一二三精品| 国产午夜亚洲精品午夜鲁丝片| 久久www免费人成看片高清| 欧美大胆人体bbbb| 国产原创一区二区| 久久久久97国产精华液好用吗| 国产精品自拍一区| 国产精品免费看片| 在线影院国内精品| 香蕉影视欧美成人| 日韩视频免费观看高清完整版 | 丁香天五香天堂综合| 国产无一区二区| 97精品久久久久中文字幕| 一区二区三区国产豹纹内裤在线| 在线视频观看一区| 日本不卡视频一二三区| 国产日韩欧美一区二区三区乱码| 99免费精品在线观看| 午夜激情综合网| 久久久久久久久久久电影| 成人国产亚洲欧美成人综合网| 国产精品国产精品国产专区不蜜| 欧美三级三级三级| 高清国产午夜精品久久久久久| 亚洲精品自拍动漫在线| 日韩美女一区二区三区| 成人精品视频一区二区三区| 亚洲一区二区五区| 久久久激情视频| 日韩欧美区一区二| 91久久精品午夜一区二区| 久久精品国产77777蜜臀| 最新国产精品久久精品| 日韩精品中午字幕| 精品视频在线看| 成人爱爱电影网址| 狠狠色丁香婷婷综合| 亚洲国产美女搞黄色| 国产女人18毛片水真多成人如厕| 欧美久久久久久蜜桃| jlzzjlzz亚洲女人18| 国产精品69久久久久水密桃| 日韩成人免费电影| 亚洲国产精品久久久久婷婷884| 国产精品污网站| 国产亚洲精品bt天堂精选| 日韩视频免费直播| 日韩欧美的一区二区| 欧美亚洲一区二区三区四区| 成人国产一区二区三区精品| 国产传媒日韩欧美成人| 国产在线一区二区综合免费视频| 日本aⅴ免费视频一区二区三区| av午夜一区麻豆| 色婷婷综合视频在线观看| 波波电影院一区二区三区| 国产老肥熟一区二区三区| 韩日av一区二区| 国产成人在线视频网址| 国产成人亚洲综合色影视| 国产麻豆午夜三级精品| 国产麻豆精品在线| 国产69精品久久久久777| 成人激情小说网站| 91老师国产黑色丝袜在线| 国产精品视频免费| 亚洲精品中文在线| 天堂av在线一区| 激情综合五月天| 成人18视频在线播放| 中文字幕av一区二区三区免费看| 国产欧美精品在线观看| 依依成人综合视频| 精品影视av免费| 99久久精品免费看国产免费软件| 色88888久久久久久影院野外| 亚洲精品欧美在线| 麻豆成人免费电影| 91丨porny丨首页| 欧美一级xxx| 亚洲欧美另类小说视频| 免费在线观看日韩欧美| 99天天综合性| 久久中文字幕电影| 午夜激情久久久| 91浏览器打开| 中文在线一区二区| 日韩av高清在线观看| 99免费精品在线| 久久亚洲一区二区三区四区| 亚洲h在线观看| 色中色一区二区| 国产精品国产三级国产普通话三级| 毛片一区二区三区| 欧美午夜免费电影| 国产精品久久久久久久久免费桃花 | 美女一区二区在线观看| 一本色道综合亚洲| 亚洲色欲色欲www| 亚洲欧美日韩国产中文在线| 久久99久久久欧美国产| 欧美色综合天天久久综合精品| 91麻豆精品视频| 欧美主播一区二区三区| 国产日韩精品久久久| 亚洲精品福利视频网站| 7777精品伊人久久久大香线蕉 | 日韩一区二区免费电影| 久久超碰97人人做人人爱| 国产精品久久午夜| 欧美日韩mp4| 成人午夜av电影| 午夜视黄欧洲亚洲| 欧美激情综合五月色丁香小说| 成人激情校园春色| 中文字幕av一区 二区| 成人夜色视频网站在线观看| 中文字幕一区二区三区精华液| 99视频精品免费视频| 亚洲国产综合在线| 日韩精品中文字幕一区| 懂色av中文一区二区三区| 亚洲色图在线看| 欧美精品成人一区二区三区四区| 视频一区二区三区入口| 精品电影一区二区| 成人国产一区二区三区精品| 亚洲激情自拍视频| 欧美一二三区在线观看| 99久久久免费精品国产一区二区| 亚洲第一搞黄网站| 中文字幕不卡在线观看| 欧美色综合影院| 国产精品99久久久久久有的能看| 亚洲嫩草精品久久| 9191精品国产综合久久久久久| 国产一区二区导航在线播放| 亚洲综合av网| 国产精品区一区二区三| 欧美精品v国产精品v日韩精品| 不卡的av在线| 国产在线播放一区三区四| 五月天视频一区| 亚洲影院久久精品| 日韩一区中文字幕| 国产丝袜欧美中文另类| 日韩精品最新网址| 欧美一级欧美一级在线播放| 日本丶国产丶欧美色综合| 成人av免费在线观看| 国产乱码精品一区二区三区av| 亚洲成人av免费| 一区二区在线电影| 亚洲欧美激情小说另类| 中文字幕一区二| 亚洲天天做日日做天天谢日日欢| 国产精品无码永久免费888| 国产精品丝袜在线| 欧美韩国日本一区| 亚洲色图都市小说| 中文字幕一区二区三区色视频| 日本一区二区电影|