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

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

?? ropeimpl.h

?? TSP問題的一個類庫 有源代碼和stl
?? H
?? 第 1 頁 / 共 4 頁
字號:
    _CharT* __new_data = (_CharT*)
	_Data_allocate(_S_rounded_up_size(__old_len + __len));
    _RopeLeaf* __result;
    
    uninitialized_copy_n(__r->_M_data, __old_len, __new_data);
    uninitialized_copy_n(__iter, __len, __new_data + __old_len);
    _S_cond_store_eos(__new_data[__old_len + __len]);
    __STL_TRY {
	__result = _S_new_RopeLeaf(__new_data, __old_len + __len,
				   __r->get_allocator());
    }
    __STL_UNWIND(_RopeRep::__STL_FREE_STRING(__new_data, __old_len + __len,
					     __r->get_allocator()));
    return __result;
}

#ifndef __GC
// As above, but it's OK to clobber original if refcount is 1
template <class _CharT, class _Alloc>
rope<_CharT,_Alloc>::_RopeLeaf*
rope<_CharT,_Alloc>::_S_destr_leaf_concat_char_iter
		(_RopeLeaf* __r, const _CharT* __iter, size_t __len)
{
    __stl_assert(__r->_M_ref_count >= 1);
    if (__r->_M_ref_count > 1)
      return _S_leaf_concat_char_iter(__r, __iter, __len);
    size_t __old_len = __r->_M_size;
    if (_S_allocated_capacity(__old_len) >= __old_len + __len) {
	// The space has been partially initialized for the standard
	// character types.  But that doesn't matter for those types.
	uninitialized_copy_n(__iter, __len, __r->_M_data + __old_len);
	if (_S_is_basic_char_type((_CharT*)0)) {
	    _S_cond_store_eos(__r->_M_data[__old_len + __len]);
	    __stl_assert(__r->_M_c_string == __r->_M_data);
	} else if (__r->_M_c_string != __r->_M_data && 0 != __r->_M_c_string) {
	    __r->_M_free_c_string();
	    __r->_M_c_string = 0;
	}
	__r->_M_size = __old_len + __len;
	__stl_assert(__r->_M_ref_count == 1);
	__r->_M_ref_count = 2;
	return __r;
    } else {
	_RopeLeaf* __result = _S_leaf_concat_char_iter(__r, __iter, __len);
	__stl_assert(__result->_M_ref_count == 1);
	return __result;
    }
}
#endif

// Assumes left and right are not 0.
// Does not increment (nor decrement on exception) child reference counts.
// Result has ref count 1.
template <class _CharT, class _Alloc>
rope<_CharT,_Alloc>::_RopeRep*
rope<_CharT,_Alloc>::_S_tree_concat (_RopeRep* __left, _RopeRep* __right)
{
    _RopeConcatenation* __result =
      _S_new_RopeConcatenation(__left, __right, __left->get_allocator());
    size_t __depth = __result->_M_depth;
    
#   ifdef __STL_USE_STD_ALLOCATORS
      __stl_assert(__left->get_allocator() == __right->get_allocator());
#   endif
    if (__depth > 20 && (__result->_M_size < 1000 ||
			 __depth > _RopeRep::_S_max_rope_depth)) {
        _RopeRep* __balanced;
      
	__STL_TRY {
	   __balanced = _S_balance(__result);
#          ifndef __GC
	     if (__result != __balanced) {
		__stl_assert(1 == __result->_M_ref_count
			     && 1 == __balanced->_M_ref_count);
	     }
#          endif
	   __result->_M_unref_nonnil();
        }
	__STL_UNWIND((_C_deallocate(__result,1)));
		// In case of exception, we need to deallocate
		// otherwise dangling result node.  But caller
		// still owns its children.  Thus unref is
		// inappropriate.
	return __balanced;
    } else {
	return __result;
    }
}

template <class _CharT, class _Alloc>
rope<_CharT,_Alloc>::_RopeRep* rope<_CharT,_Alloc>::_S_concat_char_iter
		(_RopeRep* __r, const _CharT*__s, size_t __slen)
{
    _RopeRep* __result;
    if (0 == __slen) {
	_S_ref(__r);
	return __r;
    }
    if (0 == __r)
      return __STL_ROPE_FROM_UNOWNED_CHAR_PTR(__s, __slen,
					      __r->get_allocator());
    if (_RopeRep::_S_leaf == __r->_M_tag && 
          __r->_M_size + __slen <= _S_copy_max) {
	__result = _S_leaf_concat_char_iter((_RopeLeaf*)__r, __s, __slen);
#       ifndef __GC
	  __stl_assert(1 == __result->_M_ref_count);
#       endif
	return __result;
    }
    if (_RopeRep::_S_concat == __r->_M_tag
	&& _RopeRep::_S_leaf == ((_RopeConcatenation*)__r)->_M_right->_M_tag) {
	_RopeLeaf* __right = 
	  (_RopeLeaf* )(((_RopeConcatenation* )__r)->_M_right);
	if (__right->_M_size + __slen <= _S_copy_max) {
	  _RopeRep* __left = ((_RopeConcatenation*)__r)->_M_left;
	  _RopeRep* __nright = 
	    _S_leaf_concat_char_iter((_RopeLeaf*)__right, __s, __slen);
	  __left->_M_ref_nonnil();
	  __STL_TRY {
	    __result = _S_tree_concat(__left, __nright);
          }
	  __STL_UNWIND(_S_unref(__left); _S_unref(__nright));
#         ifndef __GC
	    __stl_assert(1 == __result->_M_ref_count);
#         endif
	  return __result;
	}
    }
    _RopeRep* __nright =
      __STL_ROPE_FROM_UNOWNED_CHAR_PTR(__s, __slen, __r->get_allocator());
    __STL_TRY {
      __r->_M_ref_nonnil();
      __result = _S_tree_concat(__r, __nright);
    }
    __STL_UNWIND(_S_unref(__r); _S_unref(__nright));
#   ifndef __GC
      __stl_assert(1 == __result->_M_ref_count);
#   endif
    return __result;
}

#ifndef __GC
template <class _CharT, class _Alloc>
rope<_CharT,_Alloc>::_RopeRep* 
rope<_CharT,_Alloc>::_S_destr_concat_char_iter(
  _RopeRep* __r, const _CharT* __s, size_t __slen)
{
    _RopeRep* __result;
    if (0 == __r)
      return __STL_ROPE_FROM_UNOWNED_CHAR_PTR(__s, __slen,
					      __r->get_allocator());
    size_t __count = __r->_M_ref_count;
    size_t __orig_size = __r->_M_size;
    __stl_assert(__count >= 1);
    if (__count > 1) return _S_concat_char_iter(__r, __s, __slen);
    if (0 == __slen) {
	__r->_M_ref_count = 2;      // One more than before
	return __r;
    }
    if (__orig_size + __slen <= _S_copy_max && 
          _RopeRep::_S_leaf == __r->_M_tag) {
	__result = _S_destr_leaf_concat_char_iter((_RopeLeaf*)__r, __s, __slen);
	return __result;
    }
    if (_RopeRep::_S_concat == __r->_M_tag) {
	_RopeLeaf* __right = (_RopeLeaf*)(((_RopeConcatenation*)__r)->_M_right);
	if (_RopeRep::_S_leaf == __right->_M_tag
	    && __right->_M_size + __slen <= _S_copy_max) {
	  _RopeRep* __new_right = 
	    _S_destr_leaf_concat_char_iter(__right, __s, __slen);
	  if (__right == __new_right) {
	      __stl_assert(__new_right->_M_ref_count == 2);
	      __new_right->_M_ref_count = 1;
	  } else {
	      __stl_assert(__new_right->_M_ref_count >= 1);
	      __right->_M_unref_nonnil();
	  }
	  __stl_assert(__r->_M_ref_count == 1);
	  __r->_M_ref_count = 2;    // One more than before.
	  ((_RopeConcatenation*)__r)->_M_right = __new_right;
	  __r->_M_size = __orig_size + __slen;
	  if (0 != __r->_M_c_string) {
	      __r->_M_free_c_string();
	      __r->_M_c_string = 0;
	  }
	  return __r;
	}
    }
    _RopeRep* __right =
      __STL_ROPE_FROM_UNOWNED_CHAR_PTR(__s, __slen, __r->get_allocator());
    __r->_M_ref_nonnil();
    __STL_TRY {
      __result = _S_tree_concat(__r, __right);
    }
    __STL_UNWIND(_S_unref(__r); _S_unref(__right))
    __stl_assert(1 == __result->_M_ref_count);
    return __result;
}
#endif /* !__GC */

template <class _CharT, class _Alloc>
rope<_CharT,_Alloc>::_RopeRep*
rope<_CharT,_Alloc>::_S_concat(_RopeRep* __left, _RopeRep* __right)
{
    if (0 == __left) {
	_S_ref(__right);
	return __right;
    }
    if (0 == __right) {
	__left->_M_ref_nonnil();
	return __left;
    }
    if (_RopeRep::_S_leaf == __right->_M_tag) {
	if (_RopeRep::_S_leaf == __left->_M_tag) {
	  if (__right->_M_size + __left->_M_size <= _S_copy_max) {
	    return _S_leaf_concat_char_iter((_RopeLeaf*)__left,
					 ((_RopeLeaf*)__right)->_M_data,
					 __right->_M_size);
	  }
	} else if (_RopeRep::_S_concat == __left->_M_tag
		   && _RopeRep::_S_leaf ==
		      ((_RopeConcatenation*)__left)->_M_right->_M_tag) {
	  _RopeLeaf* __leftright =
		    (_RopeLeaf*)(((_RopeConcatenation*)__left)->_M_right); 
	  if (__leftright->_M_size + __right->_M_size <= _S_copy_max) {
	    _RopeRep* __leftleft = ((_RopeConcatenation*)__left)->_M_left;
	    _RopeRep* __rest = _S_leaf_concat_char_iter(__leftright,
					   ((_RopeLeaf*)__right)->_M_data,
					   __right->_M_size);
	    __leftleft->_M_ref_nonnil();
	    __STL_TRY {
	      return(_S_tree_concat(__leftleft, __rest));
            }
	    __STL_UNWIND(_S_unref(__leftleft); _S_unref(__rest))
	  }
	}
    }
    __left->_M_ref_nonnil();
    __right->_M_ref_nonnil();
    __STL_TRY {
      return(_S_tree_concat(__left, __right));
    }
    __STL_UNWIND(_S_unref(__left); _S_unref(__right));
}

template <class _CharT, class _Alloc>
rope<_CharT,_Alloc>::_RopeRep*
rope<_CharT,_Alloc>::_S_substring(_RopeRep* __base, 
                               size_t __start, size_t __endp1)
{
    if (0 == __base) return 0;
    size_t __len = __base->_M_size;
    size_t __adj_endp1;
    const size_t __lazy_threshold = 128;
    
    if (__endp1 >= __len) {
	if (0 == __start) {
	    __base->_M_ref_nonnil();
	    return __base;
	} else {
	    __adj_endp1 = __len;
	}
    } else {
	__adj_endp1 = __endp1;
    }
    switch(__base->_M_tag) {
	case _RopeRep::_S_concat:
	    {
		_RopeConcatenation* __c = (_RopeConcatenation*)__base;
		_RopeRep* __left = __c->_M_left;
		_RopeRep* __right = __c->_M_right;
		size_t __left_len = __left->_M_size;
		_RopeRep* __result;

		if (__adj_endp1 <= __left_len) {
		    return _S_substring(__left, __start, __endp1);
		} else if (__start >= __left_len) {
		    return _S_substring(__right, __start - __left_len,
				  __adj_endp1 - __left_len);
		}
		_Self_destruct_ptr __left_result(
		  _S_substring(__left, __start, __left_len));
		_Self_destruct_ptr __right_result(
		  _S_substring(__right, 0, __endp1 - __left_len));
		__result = _S_concat(__left_result, __right_result);
#               ifndef __GC
		  __stl_assert(1 == __result->_M_ref_count);
#               endif
		return __result;
	    }
	case _RopeRep::_S_leaf:
	    {
		_RopeLeaf* __l = (_RopeLeaf*)__base;
		_RopeLeaf* __result;
		size_t __result_len;
		if (__start >= __adj_endp1) return 0;
		__result_len = __adj_endp1 - __start;
		if (__result_len > __lazy_threshold) goto lazy;
#               ifdef __GC
		    const _CharT* __section = __l->_M_data + __start;
		    __result = _S_new_RopeLeaf(__section, __result_len,
					  __base->get_allocator());
		    __result->_M_c_string = 0;  // Not eos terminated.
#               else
		    // We should sometimes create substring node instead.
		    __result = __STL_ROPE_FROM_UNOWNED_CHAR_PTR(
					__l->_M_data + __start, __result_len,
					__base->get_allocator());
#               endif
		return __result;
	    }
	case _RopeRep::_S_substringfn:
	    // Avoid introducing multiple layers of substring nodes.
	    {
		_RopeSubstring* __old = (_RopeSubstring*)__base;
		size_t __result_len;
		if (__start >= __adj_endp1) return 0;
		__result_len = __adj_endp1 - __start;
		if (__result_len > __lazy_threshold) {
		    _RopeSubstring* __result =
			_S_new_RopeSubstring(__old->_M_base,
					  __start + __old->_M_start,
					  __adj_endp1 - __start,
					  __base->get_allocator());
		    return __result;

		} // *** else fall through: ***
	    }
	case _RopeRep::_S_function:
	    {
		_RopeFunction* __f = (_RopeFunction*)__base;
		_CharT* __section;
		size_t __result_len;
		if (__start >= __adj_endp1) return 0;
		__result_len = __adj_endp1 - __start;

		if (__result_len > __lazy_threshold) goto lazy;
		__section = (_CharT*)
			_Data_allocate(_S_rounded_up_size(__result_len));
		__STL_TRY {
		  (*(__f->_M_fn))(__start, __result_len, __section);
                }
		__STL_UNWIND(_RopeRep::__STL_FREE_STRING(
	               __section, __result_len, __base->get_allocator()));
		_S_cond_store_eos(__section[__result_len]);
		return _S_new_RopeLeaf(__section, __result_len,
				       __base->get_allocator());
	    }
    }
    /*NOTREACHED*/
    __stl_assert(false);
  lazy:
    {
	// Create substring node.
	return _S_new_RopeSubstring(__base, __start, __adj_endp1 - __start,
			       __base->get_allocator());
    }
}

template<class _CharT>
class _Rope_flatten_char_consumer : public _Rope_char_consumer<_CharT> {
    private:
	_CharT* _M_buf_ptr;
    public:

	_Rope_flatten_char_consumer(_CharT* __buffer) {
	    _M_buf_ptr = __buffer;
	};
	~_Rope_flatten_char_consumer() {}
	bool operator() (const _CharT* __leaf, size_t __n) {
	    uninitialized_copy_n(__leaf, __n, _M_buf_ptr);
	    _M_buf_ptr += __n;
	    return true;
	}
};
	    
template<class _CharT>
class _Rope_find_char_char_consumer : public _Rope_char_consumer<_CharT> {
    private:
	_CharT _M_pattern;
    public:
	size_t _M_count;  // Number of nonmatching characters
	_Rope_find_char_char_consumer(_CharT __p) 
	  : _M_pattern(__p), _M_count(0) {}
	~_Rope_find_char_char_consumer() {}
	bool operator() (const _CharT* __leaf, size_t __n) {
	    size_t __i;
	    for (__i = 0; __i < __n; __i++) {
		if (__leaf[__i] == _M_pattern) {
		    _M_count += __i; return false;
		}
	    }
	    _M_count += __n; return true;
	}
};
	    
#ifdef __STL_USE_NEW_IOSTREAMS

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91在线观看高清| 国产一区二区三区香蕉| 蜜臀av一区二区三区| 国产高清久久久| 欧美人成免费网站| 国产精品高潮久久久久无| 蜜臀av一区二区三区| 欧美在线观看视频在线| 久久女同互慰一区二区三区| 亚洲一二三四区| 国产999精品久久| www国产亚洲精品久久麻豆| 丝袜脚交一区二区| 欧美日韩一区三区| 亚洲精品老司机| 欧美性猛交xxxx乱大交退制版 | 久久国内精品视频| 蜜臀av在线播放一区二区三区| av不卡免费电影| 国产精品丝袜一区| 国产精品一区三区| 久久婷婷国产综合国色天香 | 日本一区二区三区在线不卡| 蜜臀99久久精品久久久久久软件| 欧美日韩黄视频| 亚洲自拍偷拍网站| 欧美亚洲综合久久| 亚洲综合色区另类av| 在线国产亚洲欧美| 亚洲最大成人网4388xx| 日本乱人伦aⅴ精品| 亚洲黄一区二区三区| 91黄色在线观看| 亚洲在线观看免费| 欧美三级一区二区| 国产精品一区二区免费不卡| 国产一区二区三区四| 国产二区国产一区在线观看| 99视频精品免费视频| 色婷婷激情一区二区三区| 在线精品亚洲一区二区不卡| 9191精品国产综合久久久久久 | 色成人在线视频| 美女视频一区在线观看| 欧美色图天堂网| 夜夜嗨av一区二区三区四季av| 欧美在线观看视频一区二区| 中文字幕 久热精品 视频在线| xf在线a精品一区二区视频网站| ...xxx性欧美| 精品国产乱码久久| 亚洲你懂的在线视频| 午夜伊人狠狠久久| 国产成人精品三级麻豆| 97久久超碰国产精品电影| 亚洲少妇30p| 6080午夜不卡| 国产精品中文字幕欧美| 亚洲欧美日本在线| 欧美一区二区在线免费观看| 国产v日产∨综合v精品视频| 亚洲自拍偷拍av| 精品欧美一区二区在线观看| 成人免费视频国产在线观看| 亚洲综合精品自拍| 日韩欧美高清在线| 99视频热这里只有精品免费| 国产乱码精品一区二区三区忘忧草 | 欧美一区永久视频免费观看| 国产一区二区三区av电影 | 七七婷婷婷婷精品国产| 久久久美女艺术照精彩视频福利播放| 欧美日韩亚洲国产综合| 国产精品久久久久久亚洲毛片| 成人av电影在线播放| 丝袜美腿亚洲色图| 综合自拍亚洲综合图不卡区| 91精品福利在线一区二区三区| 不卡免费追剧大全电视剧网站| 国产美女主播视频一区| 久久精品欧美一区二区三区麻豆| 国产精品亚洲第一区在线暖暖韩国 | 欧美国产1区2区| 国产高清精品在线| 亚洲国产精华液网站w| 成人久久18免费网站麻豆 | 国产欧美综合在线观看第十页| 国产成人在线电影| 欧美精彩视频一区二区三区| 粉嫩久久99精品久久久久久夜| 成人欧美一区二区三区在线播放| 日本精品一级二级| 日本不卡1234视频| 久久久99免费| 色菇凉天天综合网| 乱中年女人伦av一区二区| 久久久久久久久一| 日本黄色一区二区| 美女被吸乳得到大胸91| 国产欧美日韩视频在线观看| 97精品视频在线观看自产线路二| 亚洲专区一二三| 久久久不卡影院| 色94色欧美sute亚洲线路一久| 天堂va蜜桃一区二区三区漫画版| 精品成人免费观看| 色综合色狠狠综合色| 老司机午夜精品| 亚洲视频每日更新| 欧美电影免费观看高清完整版在| 成人黄色av电影| 蜜桃免费网站一区二区三区| 国产精品伦一区二区三级视频| 欧美日韩视频专区在线播放| 国产激情偷乱视频一区二区三区| 亚洲激情图片qvod| 国产香蕉久久精品综合网| 欧美吞精做爰啪啪高潮| 国产精品中文字幕日韩精品| 午夜久久久影院| 亚洲人亚洲人成电影网站色| 日韩免费一区二区| 欧美午夜精品久久久久久孕妇| 国产不卡免费视频| 久久精品国产精品亚洲精品| 亚洲一线二线三线视频| 国产精品高潮久久久久无| 精品电影一区二区三区 | 久久99精品久久久久久动态图| 中文字幕一区二| 精品1区2区在线观看| 欧美一区二区网站| 欧美三级乱人伦电影| 色婷婷香蕉在线一区二区| 国产成人夜色高潮福利影视| 激情欧美日韩一区二区| 人妖欧美一区二区| 亚洲一区二区视频| 一区二区在线看| |精品福利一区二区三区| 国产精品九色蝌蚪自拍| 国产午夜三级一区二区三| 日韩免费高清电影| 日韩精品中文字幕一区二区三区| 欧美性猛片aaaaaaa做受| 色婷婷国产精品综合在线观看| 99国产精品久久久久久久久久| 成人黄色av电影| 粉嫩13p一区二区三区| 国产精品一区一区三区| 国产高清视频一区| 成人精品免费看| 一本色道a无线码一区v| 色女孩综合影院| 欧美视频日韩视频在线观看| 欧美日韩在线一区二区| 69堂成人精品免费视频| 欧美一区二区三区性视频| 日韩一区二区麻豆国产| 久久尤物电影视频在线观看| 国产午夜亚洲精品不卡| 中文字幕一区二区在线观看| 中文字幕一区二区三区在线播放 | 欧美挠脚心视频网站| 3atv一区二区三区| 久久五月婷婷丁香社区| 欧美韩日一区二区三区四区| 亚洲青青青在线视频| 午夜影院久久久| 国产乱子伦视频一区二区三区 | 色综合久久精品| 欧美丝袜丝nylons| 欧美变态口味重另类| 国产欧美一区二区精品久导航| 亚洲日本在线a| 日产精品久久久久久久性色| 国产一区在线观看视频| av一区二区不卡| 在线电影欧美成精品| 精品国产三级a在线观看| 亚洲色图欧美偷拍| 美女脱光内衣内裤视频久久网站| 懂色av一区二区三区蜜臀| 精品视频在线免费看| 国产亚洲一本大道中文在线| 亚洲特级片在线| 精品一区二区三区免费毛片爱| 9人人澡人人爽人人精品| 欧美理论在线播放| 欧美国产精品专区| 婷婷丁香久久五月婷婷| 不卡一区在线观看| 欧美成人aa大片| 一区二区三区四区国产精品| 极品销魂美女一区二区三区| 日本韩国一区二区三区| 中文字幕精品三区| 久久精品99国产精品| 666欧美在线视频| 亚洲主播在线播放|