⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xutility

📁 C语言库函数的原型,有用的拿去
💻
📖 第 1 页 / 共 2 页
字号:
	typedef std::ptrdiff_t distance_type;	// retained
	typedef _Ty *pointer;
	typedef _Ty& reference;
	};

template<class _Ty>
	value class iterator_traits<const _Ty *>
	{	// get traits from const pointer
public:
	typedef random_access_iterator_tag iterator_category;
	typedef _Ty value_type;
	typedef std::ptrdiff_t difference_type;
	typedef std::ptrdiff_t distance_type;	// retained
	typedef const _Ty *pointer;
	typedef const _Ty& reference;
	};
#endif /* _M_CEE_SAFE */

//
// PARTIAL SPECIALIZATIONS OF iterator_traits
//
template<class _Ty>
	value class iterator_traits<
		_STLCLR Generic::IInputIterator<_Ty>>
	{	// get traits from generic interface
public:
	typedef input_iterator_tag iterator_category;
	typedef _Ty value_type;
	typedef int difference_type;
	typedef int distance_type;	// retained
	typedef typename _Ty% pointer;
	typedef typename _Ty% reference;
	};

template<class _Ty>
	value class iterator_traits<
		_STLCLR Generic::IOutputIterator<_Ty>>
	{	// get traits from generic interface
public:
	typedef output_iterator_tag iterator_category;
	typedef _Ty value_type;
	typedef int difference_type;
	typedef int distance_type;	// retained
	typedef typename _Ty% pointer;
	typedef typename _Ty% reference;
	};

template<class _Ty>
	value class iterator_traits<
		_STLCLR Generic::IForwardIterator<_Ty>>
	{	// get traits from generic interface
public:
	typedef forward_iterator_tag iterator_category;
	typedef _Ty value_type;
	typedef int difference_type;
	typedef int distance_type;	// retained
	typedef typename _Ty% pointer;
	typedef typename _Ty% reference;
	};

template<class _Ty>
	value class iterator_traits<
		_STLCLR Generic::IBidirectionalIterator<_Ty>>
	{	// get traits from generic interface
public:
	typedef bidirectional_iterator_tag iterator_category;
	typedef _Ty value_type;
	typedef int difference_type;
	typedef int distance_type;	// retained
	typedef typename _Ty% pointer;
	typedef typename _Ty% reference;
	};

template<class _Ty>
	value class iterator_traits<
		_STLCLR Generic::IRandomAccessIterator<_Ty>>
	{	// get traits from generic interface
public:
	typedef random_access_iterator_tag iterator_category;
	typedef _Ty value_type;
	typedef int difference_type;
	typedef int distance_type;	// retained
	typedef typename _Ty% pointer;
	typedef typename _Ty% reference;
	};

template<class _Ty>
	value class iterator_traits<
		_STLCLR Generic::ReverseBidirectionalIterator<_Ty>>
	{	// get traits from generic interface
public:
	typedef bidirectional_iterator_tag iterator_category;
	typedef _Ty value_type;
	typedef int difference_type;
	typedef int distance_type;	// retained
	typedef typename _Ty% pointer;
	typedef typename _Ty% reference;
	};

template<class _Ty>
	value class iterator_traits<
		_STLCLR Generic::ConstReverseBidirectionalIterator<_Ty>>
	{	// get traits from generic interface
public:
	typedef bidirectional_iterator_tag iterator_category;
	typedef _Ty value_type;
	typedef int difference_type;
	typedef int distance_type;	// retained
	typedef typename _Ty% pointer;
	typedef typename _Ty% reference;
	};

template<class _Ty>
	value class iterator_traits<
		_STLCLR Generic::ReverseRandomAccessIterator<_Ty>>
	{	// get traits from generic interface
public:
	typedef random_access_iterator_tag iterator_category;
	typedef _Ty value_type;
	typedef int difference_type;
	typedef int distance_type;	// retained
	typedef typename _Ty% pointer;
	typedef typename _Ty% reference;
	};

template<class _Ty>
	value class iterator_traits<
		_STLCLR Generic::ConstReverseRandomAccessIterator<_Ty>>
	{	// get traits from generic interface
public:
	typedef random_access_iterator_tag iterator_category;
	typedef _Ty value_type;
	typedef int difference_type;
	typedef int distance_type;	// retained
	typedef typename _Ty% pointer;
	typedef typename _Ty% reference;
	};

template<class _Ty>
	value class iterator_traits<
		_STLCLR Generic::ContainerBidirectionalIterator<_Ty>>
	{	// get traits from generic interface
public:
	typedef bidirectional_iterator_tag iterator_category;
	typedef _Ty value_type;
	typedef int difference_type;
	typedef int distance_type;	// retained
	typedef typename _Ty% pointer;
	typedef typename _Ty% reference;
	};

template<class _Ty>
	value class iterator_traits<
		_STLCLR Generic::ConstContainerBidirectionalIterator<_Ty>>
	{	// get traits from generic interface
public:
	typedef bidirectional_iterator_tag iterator_category;
	typedef _Ty value_type;
	typedef int difference_type;
	typedef int distance_type;	// retained
	typedef typename _Ty% pointer;
	typedef typename _Ty% reference;
	};

template<class _Ty>
	value class iterator_traits<
		_STLCLR Generic::ContainerRandomAccessIterator<_Ty>>
	{	// get traits from generic interface
public:
	typedef random_access_iterator_tag iterator_category;
	typedef _Ty value_type;
	typedef int difference_type;
	typedef int distance_type;	// retained
	typedef typename _Ty% pointer;
	typedef typename _Ty% reference;
	};

template<class _Ty>
	value class iterator_traits<
		_STLCLR Generic::ConstContainerRandomAccessIterator<_Ty>>
	{	// get traits from generic interface
public:
	typedef random_access_iterator_tag iterator_category;
	typedef _Ty value_type;
	typedef int difference_type;
	typedef int distance_type;	// retained
	typedef typename _Ty% pointer;
	typedef typename _Ty% reference;
	};

template<>
	value class iterator_traits<bool>
	{	// get traits from integer type
public:
	typedef _Int_iterator_tag iterator_category;
	};

template<>
	value class iterator_traits<char>
	{	// get traits from integer type
public:
	typedef _Int_iterator_tag iterator_category;
	};

template<>
	value class iterator_traits<signed char>
	{	// get traits from integer type
public:
	typedef _Int_iterator_tag iterator_category;
	};

template<>
	value class iterator_traits<unsigned char>
	{	// get traits from integer type
public:
	typedef _Int_iterator_tag iterator_category;
	};

template<>
	value class iterator_traits<wchar_t>
	{	// get traits from integer type
public:
	typedef _Int_iterator_tag iterator_category;
	};

template<>
	value class iterator_traits<short>
	{	// get traits from integer type
public:
	typedef _Int_iterator_tag iterator_category;
	};

template<>
	value class iterator_traits<unsigned short>
	{	// get traits from integer type
public:
	typedef _Int_iterator_tag iterator_category;
	};

template<>
	value class iterator_traits<int>
	{	// get traits from integer type
public:
	typedef _Int_iterator_tag iterator_category;
	};

template<>
	value class iterator_traits<unsigned int>
	{	// get traits from integer type
public:
	typedef _Int_iterator_tag iterator_category;
	};

template<>
	value class iterator_traits<long>
	{	// get traits from integer type
public:
	typedef _Int_iterator_tag iterator_category;
	};

template<>
	value class iterator_traits<unsigned long>
	{	// get traits from integer type
public:
	typedef _Int_iterator_tag iterator_category;
	};

template<>
	value class iterator_traits<__int64>
	{	// get traits from integer type
public:
	typedef _Int_iterator_tag iterator_category;
	};

template<>
	value class iterator_traits<unsigned __int64>
	{	// get traits from integer type
public:
	typedef _Int_iterator_tag iterator_category;
	};

//
// TEMPLATE FUNCTION _Iter_category
//
template<class _Iter_t> inline
	typename iterator_traits<_Iter_t>::iterator_category
		_Iter_category(_Iter_t)
	{	// return category from iterator argument
	typename iterator_traits<_Iter_t>::iterator_category _Cat;

	return (_Cat);
	}

//
// TEMPLATE FUNCTION advance
//
template<typename _InIt_t,
	typename _Diff_t> inline
	void _Iter_advance(_InIt_t% _Where, _Diff_t _Off,
		input_iterator_tag)
	{	// increment iterator by offset, input iterators
	for (; 0 < _Off; --_Off)
		++_Where;
	}

template<typename _BidIt_t,
	typename _Diff_t> inline
	void _Iter_advance(_BidIt_t% _Where, _Diff_t _Off,
		bidirectional_iterator_tag)
	{	// increment iterator by offset, bidirectional iterators
	for (; 0 < _Off; --_Off)
		++_Where;
	for (; _Off < 0; ++_Off)
		--_Where;
	}

template<typename _RanIt_t,
	typename _Diff_t> inline
	void _Iter_advance(_RanIt_t% _Where, _Diff_t _Off,
		random_access_iterator_tag)
	{	// increment iterator by offset, random-access iterators
	_Where += _Off;
	}

template<typename _InIt_t,
	typename _Diff_t> inline
	void advance(_InIt_t% _Where, _Diff_t _Off)
	{	// increment iterator by _Off, arbitrary iterators
	_Iter_advance(_Where, _Off, _Iter_category(_Where));
	}

//
// TEMPLATE FUNCTIONS distance and _Iter_distance
//
template<typename _InIt_t,
	typename _Diff_t> inline
	void _Iter_distance2(_InIt_t _First, _InIt_t _Last, _Diff_t% _Off,
		input_iterator_tag)
	{	// add to _Off distance between input iterators
	for (; _First != _Last; ++_First)
		++_Off;
	}

template<typename _RanIt_t,
	typename _Diff_t> inline
	void _Iter_distance2(_RanIt_t _First, _RanIt_t _Last, _Diff_t% _Off,
		random_access_iterator_tag)
	{	// add to _Off distance between random-access iterators
	_Off += (_Diff_t)(_Last - _First);
	}

template<typename _InIt_t> inline
	int distance(_InIt_t _First, _InIt_t _Last)
	{	// return distance between iterators
	int _Off = 0;

	_Iter_distance2(_First, _Last, _Off, _Iter_category(_First));
	return (_Off);
	}

template<typename _InIt_t,
	typename _Diff_t> inline
	void _Iter_distance(_InIt_t _First, _InIt_t _Last, _Diff_t% _Off)
	{	// add to _Off distance between iterators
	_Iter_distance2(_First, _Last, _Off, _Iter_category(_First));
	}
}	// namespace cliext
#endif // _CLI_XUTILITY_

/*
 * Copyright (c) 2004-2007 by Dinkumware, Ltd.  ALL RIGHTS RESERVED.
 * Consult your license regarding permissions and restrictions.
V5.03:0009 */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -