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

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

?? stl_list.h

?? 粗慥集成算法集合 ,并有詳細的文檔資料和測試數據處
?? H
?? 第 1 頁 / 共 2 頁
字號:
/*
 *
 * Copyright (c) 1994
 * Hewlett-Packard Company
 *
 * Copyright (c) 1996,1997
 * Silicon Graphics Computer Systems, Inc.
 *
 * Copyright (c) 1997
 * Moscow Center for SPARC Technology
 *
 * Copyright (c) 1999 
 * Boris Fomitchev
 *
 * This material is provided "as is", with absolutely no warranty expressed
 * or implied. Any use is at your own risk.
 *
 * Permission to use or copy this software for any purpose is hereby granted 
 * without fee, provided the above notices are retained on all copies.
 * Permission to modify the code and to distribute modified code is granted,
 * provided the above notices are retained, and a notice that the code was
 * modified is included with the above copyright notice.
 *
 */

/* NOTE: This is an internal header file, included by other STL headers.
 *   You should not attempt to use it directly.
 */

#ifndef __SGI_STL_INTERNAL_LIST_H
#define __SGI_STL_INTERNAL_LIST_H

# ifndef __SGI_STL_INTERNAL_ALGOBASE_H
#  include <stl_algobase.h>
# endif

# ifndef __SGI_STL_INTERNAL_ALLOC_H
#  include <stl_alloc.h>
# endif

# ifndef __SGI_STL_INTERNAL_ITERATOR_H
#  include <stl_iterator.h>
# endif

# ifndef __SGI_STL_INTERNAL_CONSTRUCT_H
#  include <stl_construct.h>
# endif

__STL_BEGIN_NAMESPACE

#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
#pragma set woff 1174
#pragma set woff 1375
#endif

#  define  list  __WORKAROUND_RENAME(list)

# if defined ( __STL_USE_ABBREVS )
#  define __list_iterator         _L__It
# endif

struct _List_node_base {
  void* _M_next;
  void* _M_prev;
};

template <class _Dummy>
struct _List_global {
  typedef _List_node_base _Node;
  static void _Transfer(_List_node_base* __position, 
			_List_node_base* __first, _List_node_base* __last);
};

typedef _List_global<bool> _List_global_inst;

template <class _Tp>
struct _List_node : public _List_node_base {
  _Tp _M_data;
  __TRIVIAL_STUFF(_List_node)
};

template<class _Tp, class _Traits>
# if defined ( __STL_DEBUG )
struct _List_iterator : public __owned_link {
# else
struct _List_iterator {
# endif
  typedef _Tp value_type;
  typedef typename _Traits::pointer    pointer;
  typedef typename _Traits::reference  reference;

  typedef _List_iterator<_Tp, _Nonconst_traits<_Tp> > iterator;
  typedef _List_iterator<_Tp, _Const_traits<_Tp> >    const_iterator;
  typedef _List_iterator<_Tp, _Traits>                       _Self;

  typedef bidirectional_iterator_tag iterator_category;
  typedef _List_node<_Tp> _Node;
  typedef size_t size_type;
  typedef ptrdiff_t difference_type;

  _Node* _M_node;

  //  operator const const_iterator& () const { return *(const const_iterator*)this; } 

# if defined ( __STL_DEBUG )
  _Node* _Owner_node() const {
      const __owned_list* __ptr = _Owner();
      return __ptr ? (_Node*)__ptr->_Owner() : (_Node*)0; 
  }
  _List_iterator(const __owned_list* __root, _Node* __x) : 
    __owned_link(__root), _M_node(__x) {}
  _List_iterator() : __owned_link(0) {}
  _List_iterator(const iterator& __x) : __owned_link(__x), _M_node(__x._M_node) {}
# else
  _List_iterator(_Node* __x) : _M_node(__x) {}
  _List_iterator() {}
  _List_iterator(const iterator& __x) : _M_node(__x._M_node) {}
# endif

  reference operator*() const { 
            __stl_verbose_assert(_Valid() && _M_node!=_Owner_node(), 
				 _StlMsg_NOT_DEREFERENCEABLE); 
            return (*_M_node)._M_data; 
  }

  __STL_DEFINE_ARROW_OPERATOR

  _Self& operator++() { 
    __stl_verbose_assert(_M_node!=_Owner_node(), _StlMsg_INVALID_ADVANCE); 
    _M_node = (_Node*)(_M_node->_M_next);
    return *this;
  }
  _Self operator++(int) { 
    _Self __tmp = *this;
    ++*this;
    return __tmp;
  }
  _Self& operator--() { 
    _M_node = (_Node*)(_M_node->_M_prev);
    __stl_verbose_assert(_M_node!=_Owner_node(), _StlMsg_INVALID_ADVANCE); 
    return *this;
  }
  _Self operator--(int) { 
    _Self __tmp = *this;
    --*this;
    return __tmp;
  }
};


template<class _Tp, class _Traits, class _Traits1>
inline  bool operator==(const _List_iterator<_Tp, _Traits>& __x,
			const _List_iterator<_Tp, _Traits1>& __y ) { 
  __stl_debug_check(__check_same_owner_or_null(__x,__y));                         
  return __x._M_node == __y._M_node; 
}

#ifdef __STL_USE_SEPARATE_RELOPS_NAMESPACE
template<class _Tp, class _Traits, class _Traits1>
inline  bool operator!=(const _List_iterator<_Tp, _Traits>& __x,
			const _List_iterator<_Tp, _Traits1>& __y ) { 
    __stl_debug_check(__check_same_owner_or_null(__x, __y));                         
    return __x._M_node != __y._M_node; 
}
#else

template<class _Tp>
inline  bool operator!=(const _List_iterator<_Tp, _Nonconst_traits<_Tp> >& __x,
			const _List_iterator<_Tp, _Const_traits<_Tp> >& __y ) { 
    __stl_debug_check(__check_same_owner_or_null(__x, __y));                         
    return __x._M_node != __y._M_node; 
}

# ifdef __SUNPRO_CC
template<class _Tp>
inline  bool operator!=(const _List_iterator<_Tp, _Const_traits<_Tp> >& __x,
			const _List_iterator<_Tp, _Nonconst_traits<_Tp> >& __y ) { 
    __stl_debug_check(__check_same_owner_or_null(__x, __y));                         
    return __x._M_node != __y._M_node; 
}
# endif

#endif

#ifndef __STL_CLASS_PARTIAL_SPECIALIZATION

template <class _Tp, class _Traits>
inline _Tp*
value_type(const _List_iterator<_Tp, _Traits>&) { return 0; }

template <class _Tp, class _Traits>
inline bidirectional_iterator_tag
iterator_category(const _List_iterator<_Tp, _Traits>&) { return bidirectional_iterator_tag();}

template <class _Tp, class _Traits>
inline ptrdiff_t* distance_type(const _List_iterator<_Tp, _Traits>&) { return 0; }

#endif /* __STL_CLASS_PARTIAL_SPECIALIZATION */


// Base class that encapsulates details of allocators and helps 
// to simplify EH

template <class _Tp, class _Alloc>
class _List_base 
{
protected:
  typedef _List_node<_Tp> _Node;
  typedef typename _Alloc_traits<_Node, _Alloc>::allocator_type
           _Node_allocator_type;
public:
  typedef typename _Alloc_traits<_Tp, _Alloc>::allocator_type
          allocator_type;

  allocator_type get_allocator() const { 
    return __STL_CONVERT_ALLOCATOR((const _Node_allocator_type&)_M_node, _Tp);
  }

  _List_base(const allocator_type& __a) : _M_node(__STL_CONVERT_ALLOCATOR(__a, _Node), (_Node*)0) {
    _M_node._M_data = _M_node.allocate(1);
    _M_node._M_data->_M_next = _M_node._M_data;
    _M_node._M_data->_M_prev = _M_node._M_data;
    __stl_debug_do(_M_iter_list._Safe_init(_M_node._M_data));
  }
  ~_List_base() {
    clear();
    _M_node.deallocate(_M_node._M_data, 1);
  }

  void clear();

public:
  _STL_alloc_proxy<_Node*, _Node, _Node_allocator_type>  _M_node;
# if defined (__STL_DEBUG)
protected:
    mutable __owned_list _M_iter_list;
    void _Invalidate_all() { _M_iter_list._Invalidate_all();}
# endif
};

template <class _Tp, __STL_DEFAULT_ALLOCATOR_SELECT(_Tp) >
class list : protected _List_base<_Tp, _Alloc> {
  typedef _List_base<_Tp, _Alloc> _Base;
  typedef list<_Tp, _Alloc> _Self;
protected:
  typedef void* _Void_pointer;
public:      
  typedef _Tp value_type;
  typedef value_type* pointer;
  typedef const value_type* const_pointer;
  typedef value_type& reference;
  typedef const value_type& const_reference;
  typedef _List_node<_Tp> _Node;
  typedef size_t size_type;
  typedef ptrdiff_t difference_type;
  typedef typename _Base::allocator_type allocator_type;

public:
  typedef _List_iterator<_Tp, _Nonconst_traits<_Tp> > iterator;
  typedef _List_iterator<_Tp, _Const_traits<_Tp> >    const_iterator;

#if defined ( __STL_CLASS_PARTIAL_SPECIALIZATION ) && \
! defined (__STL_PARTIAL_SPECIALIZATION_BUG)
    typedef __STLPORT_STD::reverse_iterator<const_iterator> const_reverse_iterator;
    typedef __STLPORT_STD::reverse_iterator<iterator> reverse_iterator;
#else /* __STL_CLASS_PARTIAL_SPECIALIZATION */
# if defined (__STL_MSVC50_COMPATIBILITY)
    typedef reverse_bidirectional_iterator<const_iterator, value_type,
                                           const_reference, const value_type*, difference_type>
            const_reverse_iterator;
    typedef reverse_bidirectional_iterator<iterator, value_type, reference,
                                           pointer, difference_type>
            reverse_iterator; 
# else
  typedef reverse_bidirectional_iterator<const_iterator,value_type,
                                         const_reference,difference_type>
          const_reverse_iterator;
  typedef reverse_bidirectional_iterator<iterator,value_type,reference,
                                         difference_type>
          reverse_iterator; 
# endif /* __STL_MSVC50_COMPATIBILITY */
#endif /* __STL_CLASS_PARTIAL_SPECIALIZATION */

  // protected:
#if defined( __STL_HAS_NAMESPACES )
  __STL_USING_BASE_MEMBER _List_base<_Tp, _Alloc>::_M_node;
#endif /* __STL_HAS_NAMESPACES */
public:
  __STL_USING_BASE_MEMBER _List_base<_Tp, _Alloc>::get_allocator;
  __STL_USING_BASE_MEMBER _List_base<_Tp, _Alloc>::clear;

protected:
  _Node* _M_create_node(const _Tp& __x)
  {
    _Node* __p = _M_node.allocate(1);
    __STL_TRY {
      construct(&__p->_M_data, __x);
    }
    __STL_UNWIND(_M_node.deallocate(__p, 1));
    return __p;
  }

  _Node* _M_create_node()
  {
    _Node* __p = _M_node.allocate(1);
    __STL_TRY {
      construct(&__p->_M_data);
    }
    __STL_UNWIND(_M_node.deallocate(__p, 1));
    return __p;
  }

public:
  explicit list(const allocator_type& __a = __STL_ALLOC_INSTANCE(allocator_type)) :
    _List_base<_Tp, _Alloc>(__a) {}

# if defined (__STL_DEBUG)
  iterator begin()             { return iterator(&_M_iter_list, (_Node*)(_M_node._M_data->_M_next)); }
  const_iterator begin() const { return const_iterator(&_M_iter_list, (_Node*)(_M_node._M_data->_M_next)); }

  iterator end()             { return iterator(&_M_iter_list, _M_node._M_data); }
  const_iterator end() const { return const_iterator(&_M_iter_list, _M_node._M_data); }
# else
  iterator begin()             { return iterator((_Node*)(_M_node._M_data->_M_next)); }
  const_iterator begin() const { return const_iterator((_Node*)(_M_node._M_data->_M_next)); }

  iterator end()             { return _M_node._M_data; }
  const_iterator end() const { return _M_node._M_data; }
# endif

  reverse_iterator rbegin() 
    { return reverse_iterator(end()); }
  const_reverse_iterator rbegin() const 
    { return const_reverse_iterator(end()); }

  reverse_iterator rend()
    { return reverse_iterator(begin()); }
  const_reverse_iterator rend() const
    { return const_reverse_iterator(begin()); }

  bool empty() const { return _M_node._M_data->_M_next == _M_node._M_data; }
  size_type size() const {
    size_type __result = 0;
    distance(begin(), end(), __result);
    return __result;
  }
  size_type max_size() const { return size_type(-1); }

  reference front() { return *begin(); }
  const_reference front() const { return *begin(); }
  reference back() { return *(--end()); }
  const_reference back() const { return *(--end()); }

  void swap(list<_Tp, _Alloc>& __x) {
    __stl_debug_do(_M_iter_list._Swap_owners(__x._M_iter_list, true));
    __STLPORT_STD::swap(_M_node, __x._M_node); 
  }

  iterator insert(iterator __position, const _Tp& __x) {
    __stl_debug_check(__check_if_owner(&_M_iter_list,__position));
    _Node* __tmp = _M_create_node(__x);
    __tmp->_M_next = __position._M_node;
    __tmp->_M_prev = __position._M_node->_M_prev;
    ((_Node*) (__position._M_node->_M_prev))->_M_next = __tmp;
    __position._M_node->_M_prev = __tmp;
#  if defined ( __STL_DEBUG )

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色天天综合久久久久综合片| 国产福利一区在线| 国产蜜臀av在线一区二区三区| 欧美日本视频在线| 欧美日韩在线三区| 欧美三级蜜桃2在线观看| 欧美制服丝袜第一页| 欧美日韩国产精品自在自线| 欧美巨大另类极品videosbest| 色老头久久综合| 在线电影一区二区三区| 日韩一区二区三免费高清| 精品少妇一区二区三区免费观看 | 欧美激情综合网| 国产精品免费观看视频| 国产精品色哟哟| 亚洲一级在线观看| 男男成人高潮片免费网站| 极品尤物av久久免费看| 国产精品亚洲综合一区在线观看| 成人教育av在线| 在线精品亚洲一区二区不卡| 欧美日韩1234| 久久久不卡网国产精品二区| 国产精品久久久久久久午夜片| 亚洲卡通欧美制服中文| 老色鬼精品视频在线观看播放| 国产一区二区三区日韩| 一本色道久久综合亚洲91 | 日韩国产一二三区| 国模无码大尺度一区二区三区| 岛国精品一区二区| 日本韩国一区二区三区| 日韩欧美视频一区| 国产精品久久久久影视| 日韩二区三区四区| av一二三不卡影片| 国产午夜精品久久| 亚洲少妇最新在线视频| 麻豆91在线看| 欧美中文字幕一二三区视频| 欧美不卡视频一区| 亚洲一区日韩精品中文字幕| 国产精品一品视频| 欧美群妇大交群的观看方式| 久久久国产精华| 免费在线观看精品| 色婷婷综合久色| 国产精品午夜电影| 另类小说视频一区二区| 欧亚一区二区三区| 中文字幕在线不卡国产视频| 麻豆精品新av中文字幕| 在线精品视频一区二区| 国产精品国产三级国产普通话三级 | 成人午夜视频免费看| 制服丝袜成人动漫| 亚洲激情在线播放| 91在线视频播放地址| 久久久噜噜噜久噜久久综合| 青青草原综合久久大伊人精品| 99久久伊人精品| 国产精品久久久久久久午夜片| 精品一区二区日韩| 欧美电影免费观看高清完整版在线| 亚洲久草在线视频| 色天使色偷偷av一区二区| 中文乱码免费一区二区| 国产成a人无v码亚洲福利| 日韩精品一区二区三区四区视频| 亚洲成人综合在线| 欧美午夜不卡在线观看免费| 一级中文字幕一区二区| 99久久免费国产| 亚洲免费高清视频在线| 在线亚洲欧美专区二区| 亚洲视频在线一区二区| 在线观看视频一区二区 | 国产欧美中文在线| 国产精品一区一区三区| www成人在线观看| 国产美女一区二区三区| 久久九九久精品国产免费直播| 国产精品一区免费视频| 欧美激情在线看| jlzzjlzz欧美大全| 一级做a爱片久久| 欧美精品免费视频| 激情综合网天天干| 国产欧美一区在线| 99精品欧美一区| 午夜精品福利在线| 日韩一区二区三区精品视频| 蜜桃91丨九色丨蝌蚪91桃色| 欧美va日韩va| 99精品在线免费| 午夜视频在线观看一区二区| 欧美大肚乱孕交hd孕妇| 成人免费观看视频| 一区二区激情视频| 日韩一区二区三免费高清| 高清在线成人网| 伊人婷婷欧美激情| 精品国产亚洲在线| 色哟哟国产精品| 精品一区二区三区欧美| 国产精品久久一卡二卡| 欧美视频在线观看一区二区| 国产真实精品久久二三区| 综合电影一区二区三区 | 欧美成人aa大片| 成人黄页毛片网站| 视频一区在线视频| 国产精品麻豆一区二区| 欧美美女一区二区| 成人丝袜高跟foot| 男男成人高潮片免费网站| 国产精品国产精品国产专区不蜜 | 国产精品电影院| 91精品国产91久久久久久一区二区 | 日韩一区二区不卡| 99久久亚洲一区二区三区青草| 麻豆91精品视频| 亚洲国产视频网站| 中文字幕亚洲综合久久菠萝蜜| 欧美一区二区大片| 欧美亚洲综合色| 99re6这里只有精品视频在线观看| 另类小说色综合网站| 亚洲一级在线观看| 亚洲手机成人高清视频| 欧美国产丝袜视频| 久久蜜臀精品av| 欧美xxxx在线观看| 91精品免费在线| 欧美日韩国产经典色站一区二区三区| 99久久精品情趣| 成人激情小说网站| 大白屁股一区二区视频| 国产精品自拍毛片| 国产伦精一区二区三区| 极品美女销魂一区二区三区免费| 香蕉久久夜色精品国产使用方法| 国产精品白丝在线| 国产精品你懂的在线欣赏| 久久众筹精品私拍模特| 精品久久久久av影院| 日韩免费电影网站| 精品少妇一区二区三区日产乱码| 日韩欧美精品在线| 91精品国产黑色紧身裤美女| 欧美日韩大陆在线| 在线成人免费观看| 欧美一级在线视频| 欧美xxxxx裸体时装秀| 精品国产乱码久久久久久老虎 | 色噜噜狠狠色综合中国| 色欧美乱欧美15图片| 一本一道久久a久久精品| 色综合中文字幕| 欧美三级一区二区| 欧美一区永久视频免费观看| 欧美一区二区久久久| www精品美女久久久tv| 久久精品网站免费观看| 国产精品久久久久一区 | 久久伊99综合婷婷久久伊| 精品国产成人系列| 欧美国产一区视频在线观看| 国产农村妇女精品| 亚洲天堂中文字幕| 亚洲高清免费观看高清完整版在线观看 | 成人h版在线观看| 色综合天天综合色综合av | 亚洲老妇xxxxxx| 午夜国产不卡在线观看视频| 日本亚洲视频在线| 国产伦理精品不卡| 在线观看国产91| 精品国产乱码久久久久久牛牛| 亚洲国产岛国毛片在线| 亚洲香肠在线观看| 激情六月婷婷综合| av在线不卡电影| 欧美一卡二卡三卡四卡| 国产精品久久久久一区二区三区 | 极品美女销魂一区二区三区| 成人av午夜影院| 欧美一级生活片| 国产精品超碰97尤物18| 五月婷婷另类国产| 99久久综合精品| 欧美成人r级一区二区三区| 亚洲免费在线播放| 国产乱码精品一区二区三区忘忧草| jizz一区二区| 精品国产乱码久久久久久久 | 久久久久久久久久久电影| 一区二区三区精品在线| 国产在线一区二区综合免费视频|