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

📄 _iterator_base.h

📁 symbian上STL模板库的实现
💻 H
📖 第 1 页 / 共 2 页
字号:
//// bidirectional_iterator, and random_access_iterator are not part of//// the C++ standard.  (They have been replaced by struct iterator.)//// They are included for backward compatibility with the HP STL.//template <class _Tp, class _Distance> struct input_iterator : //    public iterator <input_iterator_tag, _Tp, _Distance, _Tp*, _Tp&> {};//struct output_iterator : public iterator <output_iterator_tag, void, void, void, void> {};//template <class _Tp, class _Distance> struct forward_iterator ://    public iterator<forward_iterator_tag, _Tp, _Distance, _Tp*, _Tp&> {};//template <class _Tp, class _Distance> struct bidirectional_iterator ://    public iterator<bidirectional_iterator_tag, _Tp, _Distance, _Tp*, _Tp&> {};//template <class _Tp, class _Distance> struct random_access_iterator ://    public iterator<random_access_iterator_tag, _Tp, _Distance, _Tp*, _Tp&> {};////# if defined (_STLP_BASE_MATCH_BUG) && defined (_STLP_USE_OLD_HP_ITERATOR_QUERIES)//template <class _Tp, class _Distance> //inline input_iterator_tag _STLP_CALL //iterator_category(const input_iterator<_Tp, _Distance>&) { return input_iterator_tag(); }//inline output_iterator_tag _STLP_CALL//iterator_category(const output_iterator&) { return output_iterator_tag(); }//template <class _Tp, class _Distance> //inline forward_iterator_tag _STLP_CALL//iterator_category(const forward_iterator<_Tp, _Distance>&) { return forward_iterator_tag(); }//template <class _Tp, class _Distance> //inline bidirectional_iterator_tag _STLP_CALL //iterator_category(const bidirectional_iterator<_Tp, _Distance>&) { return bidirectional_iterator_tag(); }//template <class _Tp, class _Distance> //inline random_access_iterator_tag _STLP_CALL//iterator_category(const random_access_iterator<_Tp, _Distance>&) { return random_access_iterator_tag(); }//template <class _Tp, class _Distance> //inline _Tp*  _STLP_CALL value_type(const input_iterator<_Tp, _Distance>&) { return (_Tp*)(0); }//template <class _Tp, class _Distance> //inline _Tp* _STLP_CALL value_type(const forward_iterator<_Tp, _Distance>&) { return (_Tp*)(0); }//template <class _Tp, class _Distance> //inline _Tp* _STLP_CALL value_type(const bidirectional_iterator<_Tp, _Distance>&) { return (_Tp*)(0); }//template <class _Tp, class _Distance> //inline _Tp* _STLP_CALL value_type(const random_access_iterator<_Tp, _Distance>&) { return (_Tp*)(0); }//template <class _Tp, class _Distance> //inline _Distance* _STLP_CALL distance_type(const input_iterator<_Tp, _Distance>&) { return (_Distance*)(0); }//template <class _Tp, class _Distance> //inline _Distance* _STLP_CALL distance_type(const forward_iterator<_Tp, _Distance>&) { return (_Distance*)(0); }//template <class _Tp, class _Distance> //inline _Distance* _STLP_CALL distance_type(const bidirectional_iterator<_Tp, _Distance>&) { return (_Distance*)(0);}//template <class _Tp, class _Distance> //inline _Distance* _STLP_CALL distance_type(const random_access_iterator<_Tp, _Distance>&) { return (_Distance*)(0); }//# endif /* BASE_MATCH */////#endif /* _STLP_NO_ANACHRONISMS */////template <class _InputIterator, class _Distance>//inline void _STLP_CALL __distance(const _InputIterator& __first, const _InputIterator& __last,//        _Distance& __n, const input_iterator_tag &) {//    _InputIterator __it(__first);//    while (__it != __last) { ++__it; ++__n; }//}////# if defined (_STLP_NONTEMPL_BASE_MATCH_BUG) //template <class _ForwardIterator, class _Distance>//inline void _STLP_CALL __distance(const _ForwardIterator& __first, const _ForwardIterator& __last,//        _Distance& __n, const forward_iterator_tag &) {//    _ForwardIterator __it(__first);//    while (__it != __last) { ++__first; ++__n; }//}////template <class _BidirectionalIterator, class _Distance>//_STLP_INLINE_LOOP void _STLP_CALL __distance(const _BidirectionalIterator& __first, //        const _BidirectionalIterator& __last,//        _Distance& __n, const bidirectional_iterator_tag &) {//    _BidirectionalIterator __it(__first);//    while (__it != __last) { ++__it; ++__n; }//}//# endif////template <class _RandomAccessIterator, class _Distance>//inline void _STLP_CALL __distance(const _RandomAccessIterator& __first, //        const _RandomAccessIterator& __last, //        _Distance& __n, const random_access_iterator_tag &) {//    __n += __last - __first;//}////#ifndef _STLP_NO_ANACHRONISMS //template <class _InputIterator, class _Distance>//inline void _STLP_CALL distance(const _InputIterator& __first, //        const _InputIterator& __last, _Distance& __n) {//    __distance(__first, __last, __n, _STLP_ITERATOR_CATEGORY(__first, _InputIterator));//}//#endif////template <class _InputIterator>//inline _STLP_DIFFERENCE_TYPE(_InputIterator) _STLP_CALL//__distance(const _InputIterator& __first, const _InputIterator& __last, const input_iterator_tag &) {//    _STLP_DIFFERENCE_TYPE(_InputIterator) __n = 0;//    _InputIterator __it(__first);  //    while (__it != __last) {//        ++__it; ++__n;//    }//    return __n;//}////# if defined (_STLP_NONTEMPL_BASE_MATCH_BUG) //template <class _ForwardIterator>//    inline _STLP_DIFFERENCE_TYPE(_ForwardIterator) _STLP_CALL //__distance(const _ForwardIterator& __first, const _ForwardIterator& __last,//        const forward_iterator_tag &)//{//    _STLP_DIFFERENCE_TYPE(_ForwardIterator) __n = 0;//    _ForwardIterator __it(__first);//    while (__it != __last) {//        ++__it; ++__n;//    }//    return __n;//}////template <class _BidirectionalIterator>//_STLP_INLINE_LOOP _STLP_DIFFERENCE_TYPE(_BidirectionalIterator) _STLP_CALL //__distance(const _BidirectionalIterator& __first, //        const _BidirectionalIterator& __last,//        const bidirectional_iterator_tag &) {//    _STLP_DIFFERENCE_TYPE(_BidirectionalIterator) __n = 0;//    _BidirectionalIterator __it(__first);//    while (__it != __last) {//        ++__it; ++__n;//    }//    return __n;//}//# endif////template <class _RandomAccessIterator>//inline _STLP_DIFFERENCE_TYPE(_RandomAccessIterator) _STLP_CALL//__distance(const _RandomAccessIterator& __first, const _RandomAccessIterator& __last,//        const random_access_iterator_tag &) {//    return __last - __first;//}////template <class _InputIterator>//inline _STLP_DIFFERENCE_TYPE(_InputIterator) _STLP_CALL//distance(const _InputIterator& __first, const _InputIterator& __last) {//    return __distance(__first, __last, _STLP_ITERATOR_CATEGORY(__first, _InputIterator));  //}//////// fbp: those are being used for iterator/const_iterator definitions everywhere//template <class _Tp>//struct _Nonconst_traits;////template <class _Tp>//struct _Const_traits {//    typedef _Tp value_type;//    typedef const _Tp&  reference;//    typedef const _Tp*  pointer;//    typedef _Nonconst_traits<_Tp> _Non_const_traits;//};////template <class _Tp>//struct _Nonconst_traits {//    typedef _Tp value_type;//    typedef _Tp& reference;//    typedef _Tp* pointer;//    typedef _Nonconst_traits<_Tp> _Non_const_traits;//};////#  if defined (_STLP_BASE_TYPEDEF_BUG)//// this workaround is needed for SunPro 4.0.1//template <class _Traits>//struct __cnst_traits_aux : private _Traits//{//    typedef typename _Traits::value_type value_type;//};//#  define __TRAITS_VALUE_TYPE(_Traits) __cnst_traits_aux<_Traits>::value_type//#  else//#  define __TRAITS_VALUE_TYPE(_Traits) _Traits::value_type//#  endif////# if defined (_STLP_MSVC)//// MSVC specific//template <class _InputIterator, class _Dist>//inline void  _STLP_CALL _Distance(_InputIterator __first, //        _InputIterator __last, _Dist& __n) {//    __distance(__first, __last, __n, _STLP_ITERATOR_CATEGORY(__first, _InputIterator));//}//# endif////template <class _InputIter, class _Distance>//_STLP_INLINE_LOOP void  _STLP_CALL __advance(_InputIter& __i, _Distance __n, const input_iterator_tag &) {//    while (__n--) ++__i;//}////// fbp : added output iterator tag variant//template <class _InputIter, class _Distance>//_STLP_INLINE_LOOP void  _STLP_CALL __advance(_InputIter& __i, _Distance __n, const output_iterator_tag &) {//    while (__n--) ++__i;//}////# if defined (_STLP_NONTEMPL_BASE_MATCH_BUG)//template <class _ForwardIterator, class _Distance>//_STLP_INLINE_LOOP void _STLP_CALL __advance(_ForwardIterator& i, _Distance n, const forward_iterator_tag &) {//    while (n--) ++i;//}//# endif////template <class _BidirectionalIterator, class _Distance>//_STLP_INLINE_LOOP void _STLP_CALL __advance(_BidirectionalIterator& __i, _Distance __n, //        const bidirectional_iterator_tag &) {//    if (__n > 0)//        while (__n--) ++__i;//    else//        while (__n++) --__i;//}////template <class _RandomAccessIterator, class _Distance>//inline void _STLP_CALL __advance(_RandomAccessIterator& __i, _Distance __n, //        const random_access_iterator_tag &) {//    __i += __n;//}////template <class _InputIterator, class _Distance>//inline void _STLP_CALL advance(_InputIterator& __i, _Distance __n) {//    __advance(__i, __n, _STLP_ITERATOR_CATEGORY(__i, _InputIterator));//}//_STLP_END_NAMESPACE////# if defined (_STLP_DEBUG) && ! defined (_STLP_DEBUG_H)//#  include <stl/debug/_debug.h>//# endif#endif /* _STLP_INTERNAL_ITERATOR_BASE_H */// Local Variables:// mode:C++// End:

⌨️ 快捷键说明

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