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

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

?? stl_hashtable.c

?? 粗慥集成算法集合 ,并有詳細的文檔資料和測試數據處
?? C
?? 第 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.
 *
 */
#ifndef __STL_HASHTABLE_C
#define __STL_HASHTABLE_C

__STL_BEGIN_NAMESPACE

#if ( __STL_STATIC_TEMPLATE_DATA > 0 )
   template <class _Tp>
   _Tp _Stl_prime<_Tp>::_M_list[__stl_num_primes]
#  else
#  if ( __STL_WEAK_ATTRIBUTE > 0 )
      const unsigned long __stl_prime_list[__stl_num_primes] __attribute__((weak))
#  else
      // give up
   static const unsigned long __stl_prime_list[__stl_num_primes]
#  endif /* __STL_WEAK_ATTRIBUTE */
#endif /* __STL_STATIC_TEMPLATE_DATA */
 = {
  53ul,         97ul,         193ul,       389ul,       769ul,
  1543ul,       3079ul,       6151ul,      12289ul,     24593ul,
  49157ul,      98317ul,      196613ul,    393241ul,    786433ul,
  1572869ul,    3145739ul,    6291469ul,   12582917ul,  25165843ul,
  50331653ul,   100663319ul,  201326611ul, 402653189ul, 805306457ul, 
  1610612741ul, 3221225473ul, 4294967291ul
};

// fbp: these defines are for outline methods definitions.
// needed to definitions to be portable. Should not be used in method bodies.

# if defined ( __STL_NESTED_TYPE_PARAM_BUG )
#  define __difference_type__ ptrdiff_t
#  define __size_type__       size_t
#  define __value_type__      _Val
#  define __key_type__        _Key
#  define __node__            _Hashtable_node<_Val>
#  define __reference__       _Val&
#  define __iterator__        _Ht_iterator<_Val, _Nonconst_traits<_Val>, _Key, _HF, _ExK, _EqK, _All>
#  define __const_iterator__  _Ht_iterator<_Val, _Const_traits<_Val>, _Key, _HF, _ExK, _EqK, _All>
# else
#  define __difference_type__  typename hashtable<_Val, _Key, _HF, _ExK, _EqK, _All>::difference_type
#  define __size_type__        __STL_TYPENAME_ON_RETURN_TYPE hashtable<_Val, _Key, _HF, _ExK, _EqK, _All>::size_type
#  define __value_type__       __STL_TYPENAME_ON_RETURN_TYPE hashtable<_Val, _Key, _HF, _ExK, _EqK, _All>::value_type
#  define __key_type__         __STL_TYPENAME_ON_RETURN_TYPE hashtable<_Val, _Key, _HF, _ExK, _EqK, _All>::key_type
#  define __node__             __STL_TYPENAME_ON_RETURN_TYPE hashtable<_Val, _Key, _HF, _ExK, _EqK, _All>::_Node
#  define __reference__        __STL_TYPENAME_ON_RETURN_TYPE  hashtable<_Val, _Key, _HF, _ExK, _EqK, _All>::reference
#  define __iterator__         __STL_TYPENAME_ON_RETURN_TYPE hashtable<_Val, _Key, _HF, _ExK, _EqK, _All>::iterator
#  define __const_iterator__   __STL_TYPENAME_ON_RETURN_TYPE hashtable<_Val, _Key, _HF, _ExK, _EqK, _All>::const_iterator
# endif

template <class _Val, class _Key, class _HF, class _ExK, class _EqK, 
          class _All>
_Hashtable_node<_Val>*
_Hashtable_iterator<_Val,_Key,_HF,_ExK,_EqK,_All>::_M_skip_to_next() {
  size_t __bucket = _M_ht->_M_bkt_num(_M_cur->_M_val);
  size_t __h_sz;
  __h_sz = this->_M_ht->bucket_count();

  _Node* __i=0;
  while (__i==0 && ++__bucket < __h_sz)
    __i = _M_ht->_M_buckets[__bucket];
  return __i;
}

template <class _Val, class _Key, class _HF, class _ExK, class _EqK, class _All>
bool 
hashtable<_Val,_Key,_HF,_ExK,_EqK,_All>::_M_equal(
						  const hashtable<_Val,_Key,_HF,_ExK,_EqK,_All>& __ht1,
						  const hashtable<_Val,_Key,_HF,_ExK,_EqK,_All>& __ht2)
{
  //  typedef _Hashtable_node<_Val> _Node;
  if (__ht1.bucket_count() != __ht2.bucket_count())
    return false;
  for (size_t __n = 0; __n < __ht1.bucket_count(); ++__n) {
    const _Node* __cur1 = __ht1._M_get_bucket(__n);
    const _Node* __cur2 = __ht2._M_get_bucket(__n);
    for ( ; __cur1 && __cur2 && __cur1->_M_val == __cur2->_M_val;
          __cur1 = __cur1->_M_next, __cur2 = __cur2->_M_next)
      {}
    if (__cur1 || __cur2)
      return false;
  }
  return true;
}  

template <class _Val, class _Key, class _HF, class _ExK, class _EqK, class _All>
pair<__iterator__, bool> 
hashtable<_Val,_Key,_HF,_ExK,_EqK,_All>
  ::insert_unique_noresize(const __value_type__& __obj)
{
  const size_type __n = _M_bkt_num(__obj);
  _Node* __first = _M_buckets[__n];

  for (_Node* __cur = __first; __cur; __cur = __cur->_M_next) 
    if (_M_equals(_M_get_key(__cur->_M_val), _M_get_key(__obj)))
      return pair<iterator, bool>(iterator(__cur, this), false);

  _Node* __tmp = _M_new_node(__obj);
  __tmp->_M_next = __first;
  _M_buckets[__n] = __tmp;
  ++_M_num_elements._M_data;
  return pair<iterator, bool>(iterator(__tmp, this), true);
}

template <class _Val, class _Key, class _HF, class _ExK, class _EqK, class _All>
__iterator__ 
hashtable<_Val,_Key,_HF,_ExK,_EqK,_All>
  ::insert_equal_noresize(const __value_type__& __obj)
{
  const size_type __n = _M_bkt_num(__obj);
  _Node* __first = _M_buckets[__n];

  for (_Node* __cur = __first; __cur; __cur = __cur->_M_next) 
    if (_M_equals(_M_get_key(__cur->_M_val), _M_get_key(__obj))) {
      _Node* __tmp = _M_new_node(__obj);
      __tmp->_M_next = __cur->_M_next;
      __cur->_M_next = __tmp;
      ++_M_num_elements._M_data;
      return iterator(__tmp, this);
    }

  _Node* __tmp = _M_new_node(__obj);
  __tmp->_M_next = __first;
  _M_buckets[__n] = __tmp;
  ++_M_num_elements._M_data;
  return iterator(__tmp, this);
}

template <class _Val, class _Key, class _HF, class _ExK, class _EqK, class _All>
__reference__ 
hashtable<_Val,_Key,_HF,_ExK,_EqK,_All>::find_or_insert(const __value_type__& __obj)
{
  resize(_M_num_elements._M_data + 1);

  size_type __n = _M_bkt_num(__obj);
  _Node* __first = _M_buckets[__n];

  for (_Node* __cur = __first; __cur; __cur = __cur->_M_next)
    if (_M_equals(_M_get_key(__cur->_M_val), _M_get_key(__obj)))
      return __cur->_M_val;

  _Node* __tmp = _M_new_node(__obj);
  __tmp->_M_next = __first;
  _M_buckets[__n] = __tmp;
  ++_M_num_elements._M_data;
  return __tmp->_M_val;
}

template <class _Val, class _Key, class _HF, class _ExK, class _EqK, class _All>
pair<__iterator__,
     __iterator__> 
hashtable<_Val,_Key,_HF,_ExK,_EqK,_All>::equal_range(const __key_type__& __key)
{
  typedef pair<iterator, iterator> _Pii;
  const size_type __n = _M_bkt_num_key(__key);

  for (_Node* __first = _M_buckets[__n]; __first; __first = __first->_M_next)
    if (_M_equals(_M_get_key(__first->_M_val), __key)) {
      for (_Node* __cur = __first->_M_next; __cur; __cur = __cur->_M_next)
        if (!_M_equals(_M_get_key(__cur->_M_val), __key))
          return _Pii(iterator(__first, this), iterator(__cur, this));
      for (size_type __m = __n + 1; __m < _M_buckets.size(); ++__m)
        if (_M_buckets[__m])
          return _Pii(iterator(__first, this),
                     iterator(_M_buckets[__m], this));
      return _Pii(iterator(__first, this), end());
    }
  return _Pii(end(), end());
}

template <class _Val, class _Key, class _HF, class _ExK, class _EqK, class _All>
pair<__const_iterator__, 
     __const_iterator__> 
hashtable<_Val,_Key,_HF,_ExK,_EqK,_All>
  ::equal_range(const __key_type__& __key) const
{
  typedef pair<const_iterator, const_iterator> _Pii;
  const size_type __n = _M_bkt_num_key(__key);

  for (const _Node* __first = _M_buckets[__n] ;
       __first; 
       __first = __first->_M_next) {
    if (_M_equals(_M_get_key(__first->_M_val), __key)) {
      for (const _Node* __cur = __first->_M_next;
           __cur;
           __cur = __cur->_M_next)
        if (!_M_equals(_M_get_key(__cur->_M_val), __key))
          return _Pii(const_iterator(__first, this),
                      const_iterator(__cur, this));
      for (size_type __m = __n + 1; __m < _M_buckets.size(); ++__m)
        if (_M_buckets[__m])
          return _Pii(const_iterator(__first, this),
                      const_iterator(_M_buckets[__m], this));
      return _Pii(const_iterator(__first, this), end());
    }
  }
  return _Pii(end(), end());
}

template <class _Val, class _Key, class _HF, class _ExK, class _EqK, class _All>
__size_type__ 
hashtable<_Val,_Key,_HF,_ExK,_EqK,_All>::erase(const __key_type__& __key)
{
  const size_type __n = _M_bkt_num_key(__key);
  _Node* __first = _M_buckets[__n];
  size_type __erased = 0;

  if (__first) {
    _Node* __cur = __first;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
av在线综合网| 欧美亚洲另类激情小说| 一区二区三区四区亚洲| 欧美xxx久久| 色久优优欧美色久优优| 国产呦精品一区二区三区网站| 中文字幕一区二区三区四区不卡 | 亚洲图片欧美色图| 久久综合久久综合久久综合| 欧美大胆一级视频| 91网上在线视频| 国产白丝网站精品污在线入口| 午夜欧美大尺度福利影院在线看| 欧美国产综合一区二区| 欧美成人猛片aaaaaaa| 日本道精品一区二区三区| 国产成人免费高清| 精品一区二区三区蜜桃| 亚洲成年人影院| 一区二区三区 在线观看视频| 国产欧美一区二区精品性| 91精品欧美综合在线观看最新| 色综合咪咪久久| 成人永久aaa| 国产精品一区免费视频| 男人的天堂久久精品| 亚洲二区在线观看| 一区二区国产视频| 亚洲欧美色图小说| 中文字幕佐山爱一区二区免费| 欧美国产一区二区在线观看 | 久久久不卡网国产精品二区| 91精品国产一区二区三区蜜臀| 日本乱人伦一区| 色综合网色综合| 97国产一区二区| 91色porny在线视频| 成人av在线一区二区三区| 国产99久久精品| 国产成人av影院| 国产不卡视频一区二区三区| 国产一区二区91| 国产成人免费在线视频| 国产精品一级片在线观看| 国产乱色国产精品免费视频| 国产在线精品不卡| 国产精品123区| 成人爱爱电影网址| 不卡电影一区二区三区| 97久久超碰精品国产| 91麻豆国产福利在线观看| 91国偷自产一区二区使用方法| 欧美午夜在线观看| 51精品国自产在线| 2020国产精品| 中文字幕中文字幕一区二区| 亚洲精品网站在线观看| 亚洲无线码一区二区三区| 日本三级亚洲精品| 久88久久88久久久| 国产69精品久久777的优势| jiyouzz国产精品久久| 色久综合一二码| 欧美日韩亚州综合| 日韩你懂的在线播放| 久久精品人人做人人爽97| 最新国产の精品合集bt伙计| 亚洲国产欧美在线| 奇米综合一区二区三区精品视频 | 日韩国产欧美在线视频| 加勒比av一区二区| 成人av集中营| 欧美日韩aaaaaa| 26uuu成人网一区二区三区| 国产精品国产自产拍在线| 亚洲尤物在线视频观看| 久久精品国产一区二区三区免费看| 国产一区二区不卡老阿姨| 色综合天天天天做夜夜夜夜做| 欧美日韩国产小视频在线观看| 欧美精选一区二区| 中文字幕欧美日韩一区| 亚洲国产精品久久人人爱| 麻豆久久一区二区| av日韩在线网站| 欧美一区二区三区视频| 国产精品久久久久久久午夜片 | 高清shemale亚洲人妖| 欧美日韩电影在线播放| 久久精品网站免费观看| 天天综合日日夜夜精品| 不卡的电影网站| 日韩视频免费观看高清完整版在线观看 | 成人一级黄色片| 欧美酷刑日本凌虐凌虐| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 中文字幕亚洲区| 蜜乳av一区二区| 91小视频免费看| 精品福利在线导航| 一区二区三区四区乱视频| 国产精品综合久久| 91精品国产麻豆国产自产在线| 中文字幕在线不卡国产视频| 精品一区二区三区不卡| 欧美主播一区二区三区美女| 欧美国产激情二区三区| 久久精品理论片| 欧美日韩精品欧美日韩精品一综合| 国产网红主播福利一区二区| 日本不卡视频在线| 91黄色免费版| 亚洲欧美视频一区| 成人avav影音| 久久欧美一区二区| 蜜臀91精品一区二区三区 | 欧美国产欧美综合| 免费成人美女在线观看| 欧亚一区二区三区| 亚洲视频在线一区观看| 成人午夜短视频| www国产成人免费观看视频 深夜成人网| 午夜伦理一区二区| 欧美日韩亚洲综合一区二区三区| 亚洲欧洲日产国产综合网| 丁香啪啪综合成人亚洲小说 | 久久爱www久久做| 欧美日韩一级二级| 亚洲一区视频在线| 欧洲精品一区二区三区在线观看| 亚洲欧洲精品一区二区三区| 成人精品免费网站| 中文天堂在线一区| eeuss影院一区二区三区| 国产欧美日韩麻豆91| 国产不卡视频在线播放| 日本一区二区三区国色天香 | 91成人网在线| 亚洲国产日产av| 欧美高清视频www夜色资源网| 亚洲国产一区视频| 欧美日韩免费观看一区二区三区 | 精品少妇一区二区三区在线播放| 美女在线一区二区| 2021久久国产精品不只是精品| 国产揄拍国内精品对白| 国产日韩综合av| 成人动漫av在线| 一区二区三区视频在线观看| 欧美色图12p| 蜜臀精品久久久久久蜜臀| 日韩精品一区在线| 国产盗摄女厕一区二区三区| 国产精品短视频| 在线观看日韩av先锋影音电影院| 亚洲成人综合网站| 日韩欧美成人一区二区| 国产精品一二三在| 专区另类欧美日韩| 欧美二区乱c少妇| 九九视频精品免费| 国产精品电影一区二区三区| 欧美系列在线观看| 免费高清视频精品| 久久精品视频在线免费观看| 99久久久精品| 偷偷要91色婷婷| 久久一区二区三区国产精品| caoporn国产精品| 亚洲福利视频一区| 久久久久国产成人精品亚洲午夜| 91在线看国产| 日韩国产高清影视| 中文av一区特黄| 欧美日本一区二区三区四区| 国内精品伊人久久久久av影院| 一区精品在线播放| 91精品欧美综合在线观看最新| 国产成a人亚洲| 亚洲线精品一区二区三区| 欧美哺乳videos| 91啦中文在线观看| 精品亚洲porn| 一区二区三区日韩| 欧美精品一区二区三区高清aⅴ | 日韩美女啊v在线免费观看| 欧美福利视频导航| 国产.欧美.日韩| 日韩电影免费在线观看网站| 日本一区二区成人| 日韩一级黄色大片| 91婷婷韩国欧美一区二区| 久久电影网电视剧免费观看| 一区二区三区在线视频播放| 久久久精品欧美丰满| 欧美精品丝袜中出| www.在线成人| 国内外成人在线| 亚洲成在线观看| 亚洲欧美偷拍三级|