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

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

?? stl_tree.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_TREE_H
#define __SGI_STL_INTERNAL_TREE_H

/*

Red-black tree class, designed for use in implementing STL
associative containers (set, multiset, map, and multimap). The
insertion and deletion algorithms are based on those in Cormen,
Leiserson, and Rivest, Introduction to Algorithms (MIT Press, 1990),
except that

(1) the header cell is maintained with links not only to the root
but also to the leftmost node of the tree, to enable constant time
begin(), and to the rightmost node of the tree, to enable linear time
performance when used with the generic set algorithms (set_union,
etc.);

(2) when a node being deleted has two children its successor node is
relinked into its place, rather than copied, so that the only
iterators invalidated are those referring to the deleted node.

*/

# 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

# ifndef __SGI_STL_INTERNAL_FUNSTION_H
#  include <stl_function.h>
# endif

# if defined ( __STL_USE_ABBREVS )
// ugliness is intentional - to reduce conflicts possibility
#  define _Rb_tree_node_base       _rbT__NB
#  define _Rb_tree_node            _rbT__N
#  define _Rb_base_iterator        _rbTB__It
#  define _Rb_tree_base_iterator   _rbT__It
#  define _Rb_tree_base            _rbT__B
# endif

__STL_BEGIN_NAMESPACE

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

# if defined (__STL_DEBUG)
#   define _Make_iterator(__l) iterator(&_M_iter_list,__l) 
#   define _Make_const_iterator(__l) const_iterator(&_M_iter_list,__l)
# else
#   define _Make_iterator iterator
#   define _Make_const_iterator const_iterator
# endif

typedef bool _Rb_tree_Color_type;
const _Rb_tree_Color_type _S_rb_tree_red = false;
const _Rb_tree_Color_type _S_rb_tree_black = true;

struct _Rb_tree_node_base
{
  typedef _Rb_tree_Color_type _Color_type;
  typedef _Rb_tree_node_base* _Base_ptr;

  _Color_type _M_color; 
  _Base_ptr _M_parent;
  _Base_ptr _M_left;
  _Base_ptr _M_right;

  static _Base_ptr _S_minimum(_Base_ptr __x)
  {
    while (__x->_M_left != 0) __x = __x->_M_left;
    return __x;
  }

  static _Base_ptr _S_maximum(_Base_ptr __x)
  {
    while (__x->_M_right != 0) __x = __x->_M_right;
    return __x;
  }
};

template <class _Value>
struct _Rb_tree_node : public _Rb_tree_node_base
{
  _Value _M_value_field;
  __TRIVIAL_STUFF(_Rb_tree_node)
};

struct _Rb_tree_base_iterator;

template <class _Dummy>
struct _Rb_global {
  typedef _Rb_tree_node_base* _Base_ptr;
  // those used to be global functions 
  static void _Rebalance(_Rb_tree_node_base* __x, _Rb_tree_node_base*& __root);
  static _Rb_tree_node_base* _Rebalance_for_erase(_Rb_tree_node_base* __z,
						  _Rb_tree_node_base*& __root,
						  _Rb_tree_node_base*& __leftmost,
						  _Rb_tree_node_base*& __rightmost);
  // those are from _Rb_tree_base_iterator - moved here to reduce code bloat
  // moved here to reduce code bloat without templatizing _Rb_tree_base_iterator
  static void _M_increment(_Rb_tree_base_iterator*);
  static void _M_decrement(_Rb_tree_base_iterator*);
};

typedef _Rb_global<bool> _Rb_global_inst;

struct _Rb_tree_base_iterator
# if defined ( __STL_DEBUG )
    : public __owned_link 
# endif
{
  typedef _Rb_tree_node_base::_Base_ptr _Base_ptr;
  typedef bidirectional_iterator_tag iterator_category;
  typedef ptrdiff_t difference_type;
  _Base_ptr _M_node;
# if defined ( __STL_DEBUG )
  _Base_ptr _Owner_node() const {
      const __owned_list* __ptr = _Owner();
      return __ptr ? _Base_ptr(__ptr->_Owner()) : _Base_ptr(0); 
  }
  _Rb_tree_base_iterator() : __owned_link(0) {}
  _Rb_tree_base_iterator(const __owned_list* __root, _Base_ptr __p) : 
      __owned_link(__root), _M_node(__p) {}
# endif

};

inline bool operator==(const _Rb_tree_base_iterator& __x,
                       const _Rb_tree_base_iterator& __y) {
  return __x._M_node == __y._M_node;
}

inline bool operator!=(const _Rb_tree_base_iterator& __x,
                       const _Rb_tree_base_iterator& __y) {
  return __x._M_node != __y._M_node;
}


template <class _Value, class _Traits>
struct _Rb_tree_iterator : public _Rb_tree_base_iterator
{
  typedef _Value value_type;
  typedef typename _Traits::reference  reference;
  typedef typename _Traits::pointer    pointer;
  
  typedef _Rb_tree_iterator<_Value, _Nonconst_traits<_Value> >  iterator;
  typedef _Rb_tree_iterator<_Value, _Const_traits<_Value> > const_iterator;
  typedef _Rb_tree_iterator<_Value, _Traits> _Self;
  typedef _Rb_tree_node<_Value>* _Link_type;

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

  _Rb_tree_iterator() {}
# if defined ( __STL_DEBUG )
  _Rb_tree_iterator(const __owned_list* __root, _Link_type __x) :
    _Rb_tree_base_iterator(__root,__x) {}
  _Rb_tree_iterator(const iterator& __it) : 
    _Rb_tree_base_iterator(__it._Owner(),__it._M_node) {}
# else
  _Rb_tree_iterator(_Link_type __x) { _M_node = __x; }
  _Rb_tree_iterator(const iterator& __it) { _M_node = __it._M_node; }
# endif

  reference operator*() const { 
    __stl_verbose_assert(_M_node!=_Owner_node(), _StlMsg_NOT_DEREFERENCEABLE); 
    return _Link_type(_M_node)->_M_value_field; 
  }
  
  __STL_DEFINE_ARROW_OPERATOR

  _Self& operator++() { _Rb_global_inst::_M_increment(this); return *this; }
  _Self operator++(int) {
    _Self __tmp = *this;
    _Rb_global_inst::_M_increment(this);
    return __tmp;
  }
    
  _Self& operator--() { _Rb_global_inst::_M_decrement(this); return *this; }
  _Self operator--(int) {
    _Self __tmp = *this;
    _Rb_global_inst::_M_decrement(this);
    return __tmp;
  }
};

# ifndef __STL_CLASS_PARTIAL_SPECIALIZATION


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


inline bidirectional_iterator_tag
iterator_category(const _Rb_tree_base_iterator&) {
  return bidirectional_iterator_tag();
}

inline ptrdiff_t*
distance_type(const _Rb_tree_base_iterator&) {
  return (ptrdiff_t*) 0;
}

#endif /* __STL_CLASS_PARTIAL_SPECIALIZATION */

// Base class to help EH

template <class _Tp, class _Alloc>
struct _Rb_tree_base
{
  typedef _Rb_tree_node<_Tp> _Node;
  typedef typename _Alloc_traits<_Tp, _Alloc>::allocator_type allocator_type;

  _Rb_tree_base(const allocator_type& __a) : 
    _M_header(__STL_CONVERT_ALLOCATOR(__a, _Node), (_Node*)0) { 
      _M_header._M_data = _M_header.allocate(1); 
      __stl_debug_do(_M_iter_list._Safe_init(_M_header._M_data));
  }
  ~_Rb_tree_base() { 
    __stl_debug_do(_M_iter_list._Invalidate());
    _M_header.deallocate(_M_header._M_data,1); 
  }
  allocator_type get_allocator() const { 
    return __STL_CONVERT_ALLOCATOR(_M_header, _Tp); 
  }
protected:
  typedef typename _Alloc_traits<_Node, _Alloc>::allocator_type _M_node_allocator_type;
  _STL_alloc_proxy<_Node*, _Node, _M_node_allocator_type> _M_header;
  
# if defined (__STL_DEBUG)
protected:
    friend class __owned_link;
    mutable __owned_list _M_iter_list;
public:
    void _Invalidate_all() {_M_iter_list._Invalidate_all();}
# endif
};


template <class _Key, class _Value, class _KeyOfValue, class _Compare,
          __STL_DEFAULT_ALLOCATOR_SELECT(_Value) >
class _Rb_tree : protected _Rb_tree_base<_Value, _Alloc> {
  typedef _Rb_tree_base<_Value, _Alloc> _Base;
protected:
  typedef _Rb_tree_node_base* _Base_ptr;
  typedef _Rb_tree_node<_Value> _Node;
  typedef _Rb_tree_Color_type _Color_type;
public:
  typedef _Key key_type;
  typedef _Value value_type;
  typedef value_type* pointer;
  typedef const value_type* const_pointer;
  typedef value_type& reference;
  typedef const value_type& const_reference;
  typedef _Rb_tree_node<_Value>* _Link_type;
  typedef size_t size_type;
  typedef ptrdiff_t difference_type;

  typedef typename _Base::allocator_type allocator_type;
  __STL_USING_BASE_MEMBER _Rb_tree_base<_Value, _Alloc>::get_allocator;

protected:
#if defined( __STL_HAS_NAMESPACES )
  __STL_USING_BASE_MEMBER _Rb_tree_base<_Value, _Alloc>::_M_header;
#endif /* __STL_USE_NAMESPACES */

protected:

  _Link_type _M_create_node(const value_type& __x)
  {
    _Link_type __tmp = _M_header.allocate(1);
    __STL_TRY {
      construct(&__tmp->_M_value_field, __x);
    }
    __STL_UNWIND(_M_header.deallocate(__tmp,1));
    return __tmp;
  }

  _Link_type _M_clone_node(_Link_type __x)
  {
    _Link_type __tmp = _M_create_node(__x->_M_value_field);
    __tmp->_M_color = __x->_M_color;
    __tmp->_M_left = 0;
    __tmp->_M_right = 0;
    return __tmp;
  }

  void destroy_node(_Link_type __p)
  {
    destroy(&__p->_M_value_field);
    _M_header.deallocate(__p,1);
  }

protected:
  size_type _M_node_count; // keeps track of size of tree
  _Compare _M_key_compare;

  _Link_type& _M_root() const 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
aaa欧美大片| 日本不卡一二三区黄网| 欧美大片免费久久精品三p| 91福利精品第一导航| 99热99精品| 91视频91自| 91麻豆精东视频| 欧美在线观看视频在线| 欧美日韩免费观看一区二区三区| 色88888久久久久久影院野外 | 欧美一级淫片007| 制服丝袜激情欧洲亚洲| 欧美成人综合网站| 久久精品视频一区二区三区| 国产精品色呦呦| 亚洲精品第一国产综合野| 亚洲一二三四久久| 日本亚洲一区二区| 国产盗摄视频一区二区三区| 北岛玲一区二区三区四区| 色婷婷av一区二区三区之一色屋| 欧美午夜精品一区二区蜜桃| 欧美一二三四区在线| 精品国产1区2区3区| 国产色综合久久| 亚洲黄网站在线观看| 天堂va蜜桃一区二区三区| 麻豆精品视频在线观看免费| 成人综合在线网站| 欧美女孩性生活视频| 国产亚洲综合在线| 亚洲永久精品国产| 激情图片小说一区| 99国产精品久| 精品对白一区国产伦| 一区二区三区高清在线| 国产自产高清不卡| 欧美无砖专区一中文字| 久久一区二区三区四区| 亚洲小说欧美激情另类| 国产精品一二二区| 欧美浪妇xxxx高跟鞋交| 欧美激情中文字幕| 蜜桃久久精品一区二区| 色综合久久天天| 久久亚洲精品国产精品紫薇| 亚洲一区二区成人在线观看| 国产超碰在线一区| 欧美一级高清片在线观看| 国产精品九色蝌蚪自拍| 久久狠狠亚洲综合| 欧美日韩视频在线观看一区二区三区| 日韩一区二区高清| 亚洲一区二区三区精品在线| 成人午夜看片网址| 日韩一区二区不卡| 五月天婷婷综合| 一本色道久久综合狠狠躁的推荐| 精品1区2区在线观看| 亚洲午夜久久久久久久久电影网 | 国产成人综合视频| 日韩一区二区免费电影| 午夜精品影院在线观看| 91成人免费在线| 亚洲乱码中文字幕| av影院午夜一区| 欧美激情一区二区三区蜜桃视频| 手机精品视频在线观看| 色8久久精品久久久久久蜜| ●精品国产综合乱码久久久久| 精品午夜久久福利影院| 精品奇米国产一区二区三区| 日韩电影在线免费观看| 欧美一区二区三区白人| 日本免费新一区视频| 日韩欧美一区二区三区在线| 免费欧美日韩国产三级电影| 宅男噜噜噜66一区二区66| 樱桃国产成人精品视频| 欧美三级中文字| 天天操天天干天天综合网| 欧美猛男gaygay网站| 婷婷成人激情在线网| 91精品国产手机| 久久成人精品无人区| 欧美草草影院在线视频| 黄色精品一二区| 中文天堂在线一区| 99久久久久久| 午夜激情综合网| 精品国产污污免费网站入口 | 国产日韩欧美麻豆| 99在线精品观看| 亚洲一区二区综合| 在线电影一区二区三区| 久久精品二区亚洲w码| 中文字幕精品在线不卡| 色狠狠色狠狠综合| 日韩国产欧美在线播放| 国产午夜精品久久久久久免费视| 成人动漫精品一区二区| 亚洲成人av福利| 久久久.com| 欧美午夜电影网| 精彩视频一区二区| 亚洲欧美激情插 | 国产欧美日韩视频在线观看| 91色在线porny| 免费在线看一区| 国产精品二三区| 3atv在线一区二区三区| 成人在线综合网| 同产精品九九九| 欧美激情综合在线| 91精品免费在线| 99久久精品国产麻豆演员表| 奇米精品一区二区三区四区| 椎名由奈av一区二区三区| 欧美一二三区在线| 91首页免费视频| 国产激情一区二区三区| 日韩专区欧美专区| 亚洲日本乱码在线观看| 久久综合99re88久久爱| 欧美高清dvd| 91丝袜美女网| 国产精品一二三区| 美女在线视频一区| 夜夜亚洲天天久久| 国产精品久久久久一区二区三区 | 国产精品家庭影院| 精品va天堂亚洲国产| 欧美美女一区二区在线观看| 97久久精品人人做人人爽| 国产麻豆午夜三级精品| 欧美aaaaaa午夜精品| 午夜精品福利一区二区三区av| 国产精品久久久久久久岛一牛影视| 日韩女优电影在线观看| 91精品一区二区三区在线观看| 91黄视频在线| a级精品国产片在线观看| 国产成人免费视频网站高清观看视频| 日韩精品电影在线观看| 亚洲小少妇裸体bbw| 精品国产伦一区二区三区观看方式 | 精品国产污网站| 日韩欧美一级片| 日韩精品在线看片z| 69久久99精品久久久久婷婷| 欧美日韩不卡一区| 欧美日韩国产综合久久| 欧美日韩一区二区在线视频| 欧美在线不卡视频| 欧美系列一区二区| 精品视频免费在线| 91精品国产综合久久久久久久 | av电影在线观看不卡| 国产在线国偷精品产拍免费yy| 久久国产欧美日韩精品| 捆绑变态av一区二区三区| 精品综合久久久久久8888| 九色porny丨国产精品| 国产另类ts人妖一区二区| 高清成人在线观看| 99久久久久久| 欧美影片第一页| 欧美疯狂做受xxxx富婆| 欧美大片一区二区| 欧美国产欧美综合| 亚洲免费电影在线| 日韩av一级片| 国产精品18久久久久久久久久久久| 国产精品18久久久久久久久| av午夜精品一区二区三区| 欧美日韩日日摸| 26uuu亚洲| 亚洲欧美另类综合偷拍| 奇米一区二区三区| 国产成人综合亚洲91猫咪| 91在线视频观看| 欧美绝品在线观看成人午夜影视| 欧美成人vps| 亚洲欧美另类小说| 麻豆精品久久精品色综合| 9人人澡人人爽人人精品| 欧美日韩美少妇| 久久精品视频在线看| 亚洲一区二区三区四区五区黄| 麻豆一区二区在线| 色综合色狠狠天天综合色| 精品国内二区三区| 夜夜精品浪潮av一区二区三区| 免费成人av资源网| 91美女片黄在线观看| 精品乱人伦小说| 亚洲小少妇裸体bbw| 成人激情图片网| 欧美成人精品二区三区99精品| 一区二区三区在线视频免费|