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

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

?? stl_rope.h

?? TSP問題的一個類庫 有源代碼和stl
?? H
?? 第 1 頁 / 共 5 頁
字號:
/*
 * Copyright (c) 1997-1998
 * Silicon Graphics Computer Systems, Inc.
 *
 * Permission to use, copy, modify, distribute and sell this software
 * and its documentation for any purpose is hereby granted without fee,
 * provided that the above copyright notice appear in all copies and
 * that both that copyright notice and this permission notice appear
 * in supporting documentation.  Silicon Graphics makes no
 * representations about the suitability of this software for any
 * purpose.  It is provided "as is" without express or implied warranty.
 */

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

// rope<_CharT,_Alloc> is a sequence of _CharT.
// Ropes appear to be mutable, but update operations
// really copy enough of the data structure to leave the original
// valid.  Thus ropes can be logically copied by just copying
// a pointer value.

#ifndef __SGI_STL_INTERNAL_ROPE_H
# define __SGI_STL_INTERNAL_ROPE_H

# ifdef __GC
#   define __GC_CONST const
# else
#   include <stl_threads.h>
#   define __GC_CONST   // constant except for deallocation
# endif
# ifdef __STL_SGI_THREADS
#    include <mutex.h>
# endif

__STL_BEGIN_NAMESPACE

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

// The _S_eos function is used for those functions that
// convert to/from C-like strings to detect the end of the string.

// The end-of-C-string character.
// This is what the draft standard says it should be.
template <class _CharT>
inline _CharT _S_eos(_CharT*) { return _CharT(); }

// Test for basic character types.
// For basic character types leaves having a trailing eos.
template <class _CharT>
inline bool _S_is_basic_char_type(_CharT*) { return false; }
template <class _CharT>
inline bool _S_is_one_byte_char_type(_CharT*) { return false; }

inline bool _S_is_basic_char_type(char*) { return true; }
inline bool _S_is_one_byte_char_type(char*) { return true; }
inline bool _S_is_basic_char_type(wchar_t*) { return true; }

// Store an eos iff _CharT is a basic character type.
// Do not reference _S_eos if it isn't.
template <class _CharT>
inline void _S_cond_store_eos(_CharT&) {}

inline void _S_cond_store_eos(char& __c) { __c = 0; }
inline void _S_cond_store_eos(wchar_t& __c) { __c = 0; }

// char_producers are logically functions that generate a section of
// a string.  These can be convereted to ropes.  The resulting rope
// invokes the char_producer on demand.  This allows, for example,
// files to be viewed as ropes without reading the entire file.
template <class _CharT>
class char_producer {
    public:
        virtual ~char_producer() {};
        virtual void operator()(size_t __start_pos, size_t __len, 
                                _CharT* __buffer) = 0;
        // Buffer should really be an arbitrary output iterator.
        // That way we could flatten directly into an ostream, etc.
        // This is thoroughly impossible, since iterator types don't
        // have runtime descriptions.
};

// Sequence buffers:
//
// Sequence must provide an append operation that appends an
// array to the sequence.  Sequence buffers are useful only if
// appending an entire array is cheaper than appending element by element.
// This is true for many string representations.
// This should  perhaps inherit from ostream<sequence::value_type>
// and be implemented correspondingly, so that they can be used
// for formatted.  For the sake of portability, we don't do this yet.
//
// For now, sequence buffers behave as output iterators.  But they also
// behave a little like basic_ostringstream<sequence::value_type> and a
// little like containers.

template<class _Sequence, size_t _Buf_sz = 100
#   if defined(__sgi) && !defined(__GNUC__)
#        define __TYPEDEF_WORKAROUND
         ,class _V = typename _Sequence::value_type
#   endif
        >
// The 3rd parameter works around a common compiler bug.
class sequence_buffer : public output_iterator {
    public:
#       ifndef __TYPEDEF_WORKAROUND
            typedef typename _Sequence::value_type value_type;
#       else
            typedef _V value_type;
#       endif
    protected:
        _Sequence* _M_prefix;
        value_type _M_buffer[_Buf_sz];
        size_t     _M_buf_count;
    public:
        void flush() {
            _M_prefix->append(_M_buffer, _M_buffer + _M_buf_count);
            _M_buf_count = 0;
        }
        ~sequence_buffer() { flush(); }
        sequence_buffer() : _M_prefix(0), _M_buf_count(0) {}
        sequence_buffer(const sequence_buffer& __x) {
            _M_prefix = __x._M_prefix;
            _M_buf_count = __x._M_buf_count;
            copy(__x._M_buffer, __x._M_buffer + __x._M_buf_count, _M_buffer);
        }
        sequence_buffer(sequence_buffer& __x) {
            __x.flush();
            _M_prefix = __x._M_prefix;
            _M_buf_count = 0;
        }
        sequence_buffer(_Sequence& __s) : _M_prefix(&__s), _M_buf_count(0) {}
        sequence_buffer& operator= (sequence_buffer& __x) {
            __x.flush();
            _M_prefix = __x._M_prefix;
            _M_buf_count = 0;
            return *this;
        }
        sequence_buffer& operator= (const sequence_buffer& __x) {
            _M_prefix = __x._M_prefix;
            _M_buf_count = __x._M_buf_count;
            copy(__x._M_buffer, __x._M_buffer + __x._M_buf_count, _M_buffer);
            return *this;
        }
        void push_back(value_type __x)
        {
            if (_M_buf_count < _Buf_sz) {
                _M_buffer[_M_buf_count] = __x;
                ++_M_buf_count;
            } else {
                flush();
                _M_buffer[0] = __x;
                _M_buf_count = 1;
            }
        }
        void append(value_type* __s, size_t __len)
        {
            if (__len + _M_buf_count <= _Buf_sz) {
                size_t __i = _M_buf_count;
                size_t __j = 0;
                for (; __j < __len; __i++, __j++) {
                    _M_buffer[__i] = __s[__j];
                }
                _M_buf_count += __len;
            } else if (0 == _M_buf_count) {
                _M_prefix->append(__s, __s + __len);
            } else {
                flush();
                append(__s, __len);
            }
        }
        sequence_buffer& write(value_type* __s, size_t __len)
        {
            append(__s, __len);
            return *this;
        }
        sequence_buffer& put(value_type __x)
        {
            push_back(__x);
            return *this;
        }
        sequence_buffer& operator=(const value_type& __rhs)
        {
            push_back(__rhs);
            return *this;
        }
        sequence_buffer& operator*() { return *this; }
        sequence_buffer& operator++() { return *this; }
        sequence_buffer& operator++(int) { return *this; }
};

// The following should be treated as private, at least for now.
template<class _CharT>
class _Rope_char_consumer {
    public:
        // If we had member templates, these should not be virtual.
        // For now we need to use run-time parametrization where
        // compile-time would do.  Hence this should all be private
        // for now.
        // The symmetry with char_producer is accidental and temporary.
        virtual ~_Rope_char_consumer() {};
        virtual bool operator()(const _CharT* __buffer, size_t __len) = 0;
};

// First a lot of forward declarations.  The standard seems to require
// much stricter "declaration before use" than many of the implementations
// that preceded it.
template<class _CharT, class _Alloc=__STL_DEFAULT_ALLOCATOR(_CharT)> class rope;
template<class _CharT, class _Alloc> struct _Rope_RopeConcatenation;
template<class _CharT, class _Alloc> struct _Rope_RopeLeaf;
template<class _CharT, class _Alloc> struct _Rope_RopeFunction;
template<class _CharT, class _Alloc> struct _Rope_RopeSubstring;
template<class _CharT, class _Alloc> class _Rope_iterator;
template<class _CharT, class _Alloc> class _Rope_const_iterator;
template<class _CharT, class _Alloc> class _Rope_char_ref_proxy;
template<class _CharT, class _Alloc> class _Rope_char_ptr_proxy;

template<class _CharT, class _Alloc>
bool operator== (const _Rope_char_ptr_proxy<_CharT,_Alloc>& __x,
                 const _Rope_char_ptr_proxy<_CharT,_Alloc>& __y);

template<class _CharT, class _Alloc>
_Rope_const_iterator<_CharT,_Alloc> operator-
        (const _Rope_const_iterator<_CharT,_Alloc>& __x,
         ptrdiff_t __n);

template<class _CharT, class _Alloc>
_Rope_const_iterator<_CharT,_Alloc> operator+
        (const _Rope_const_iterator<_CharT,_Alloc>& __x,
         ptrdiff_t __n);

template<class _CharT, class _Alloc>
_Rope_const_iterator<_CharT,_Alloc> operator+
        (ptrdiff_t __n,
         const _Rope_const_iterator<_CharT,_Alloc>& __x);

template<class _CharT, class _Alloc>
bool operator== 
        (const _Rope_const_iterator<_CharT,_Alloc>& __x,
         const _Rope_const_iterator<_CharT,_Alloc>& __y);

template<class _CharT, class _Alloc>
bool operator< 
        (const _Rope_const_iterator<_CharT,_Alloc>& __x,
         const _Rope_const_iterator<_CharT,_Alloc>& __y);

template<class _CharT, class _Alloc>
ptrdiff_t operator- 
        (const _Rope_const_iterator<_CharT,_Alloc>& __x,
         const _Rope_const_iterator<_CharT,_Alloc>& __y);

template<class _CharT, class _Alloc>
_Rope_iterator<_CharT,_Alloc> operator-
        (const _Rope_iterator<_CharT,_Alloc>& __x,
         ptrdiff_t __n);

template<class _CharT, class _Alloc>
_Rope_iterator<_CharT,_Alloc> operator+
        (const _Rope_iterator<_CharT,_Alloc>& __x,
         ptrdiff_t __n);

template<class _CharT, class _Alloc>
_Rope_iterator<_CharT,_Alloc> operator+
        (ptrdiff_t __n,
         const _Rope_iterator<_CharT,_Alloc>& __x);

template<class _CharT, class _Alloc>
bool operator== 
        (const _Rope_iterator<_CharT,_Alloc>& __x,
         const _Rope_iterator<_CharT,_Alloc>& __y);

template<class _CharT, class _Alloc>
bool operator< 
        (const _Rope_iterator<_CharT,_Alloc>& __x,
         const _Rope_iterator<_CharT,_Alloc>& __y);

template<class _CharT, class _Alloc>
ptrdiff_t operator- 
        (const _Rope_iterator<_CharT,_Alloc>& __x,
         const _Rope_iterator<_CharT,_Alloc>& __y);

template<class _CharT, class _Alloc>
rope<_CharT,_Alloc> operator+ (const rope<_CharT,_Alloc>& __left,
                               const rope<_CharT,_Alloc>& __right);
        
template<class _CharT, class _Alloc>
rope<_CharT,_Alloc> operator+ (const rope<_CharT,_Alloc>& __left,
                               const _CharT* __right);
        
template<class _CharT, class _Alloc>
rope<_CharT,_Alloc> operator+ (const rope<_CharT,_Alloc>& __left,
                               _CharT __right);
        
// Some helpers, so we can use power on ropes.
// See below for why this isn't local to the implementation.

// This uses a nonstandard refcount convention.
// The result has refcount 0.
template<class _CharT, class _Alloc>
struct _Rope_Concat_fn
       : public binary_function<rope<_CharT,_Alloc>, rope<_CharT,_Alloc>,
                                     rope<_CharT,_Alloc> > {
        rope<_CharT,_Alloc> operator() (const rope<_CharT,_Alloc>& __x,
				const rope<_CharT,_Alloc>& __y) {
                    return __x + __y;
        }
};

template <class _CharT, class _Alloc>
inline
rope<_CharT,_Alloc>
identity_element(_Rope_Concat_fn<_CharT, _Alloc>)
{
    return rope<_CharT,_Alloc>();
}


//
// What follows should really be local to rope.  Unfortunately,
// that doesn't work, since it makes it impossible to define generic
// equality on rope iterators.  According to the draft standard, the
// template parameters for such an equality operator cannot be inferred
// from the occurence of a member class as a parameter.
// (SGI compilers in fact allow this, but the __result wouldn't be
// portable.)
// Similarly, some of the static member functions are member functions
// only to avoid polluting the global namespace, and to circumvent
// restrictions on type inference for template functions.
//

//

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品三级久久久久三级| 在线成人小视频| 国产欧美一区二区在线| 国产一区二区三区免费在线观看| 久久免费美女视频| 成人v精品蜜桃久久一区| 亚洲女人****多毛耸耸8| 欧美综合色免费| 奇米四色…亚洲| 久久亚洲欧美国产精品乐播| 不卡的av在线播放| 亚洲蜜桃精久久久久久久| 欧美猛男超大videosgay| 天堂影院一区二区| 国产欧美一区二区精品忘忧草| 不卡一卡二卡三乱码免费网站| 亚洲一区在线观看网站| 69精品人人人人| 国产精品18久久久久| 亚洲欧美日韩电影| 欧美一区国产二区| 国产成人午夜电影网| 亚洲一区免费视频| 精品国免费一区二区三区| k8久久久一区二区三区| 视频在线在亚洲| 国产视频亚洲色图| 欧美精选在线播放| av在线不卡观看免费观看| 亚洲第一激情av| 日本一二三不卡| 91精品国产品国语在线不卡| 成人午夜又粗又硬又大| 日韩不卡一区二区三区 | 国产综合成人久久大片91| 国产精品美女久久久久久2018 | 欧美性生交片4| 国内精品伊人久久久久影院对白| 中文字幕亚洲精品在线观看| 6080国产精品一区二区| jizzjizzjizz欧美| 另类小说色综合网站| 一区二区三区成人在线视频| 久久久夜色精品亚洲| 欧美日本精品一区二区三区| 成人成人成人在线视频| 久久爱www久久做| 亚洲电影激情视频网站| 欧美激情一二三区| 日韩精品一区二区三区视频在线观看 | 亚洲三级电影全部在线观看高清| 欧美mv和日韩mv国产网站| 欧美亚洲日本国产| 成人久久视频在线观看| 九色综合狠狠综合久久| 午夜影院久久久| 亚洲欧美日韩国产一区二区三区| 久久毛片高清国产| 欧美一区二区精品在线| 欧美剧情片在线观看| 一本一道久久a久久精品| 懂色一区二区三区免费观看| 久久精品国产亚洲一区二区三区| 五月婷婷欧美视频| 亚洲一区二区黄色| 一区二区三区中文在线| 自拍偷在线精品自拍偷无码专区| 久久久不卡网国产精品一区| 精品国产sm最大网站免费看| 正在播放亚洲一区| 在线播放亚洲一区| 3d动漫精品啪啪| 91精品国产综合久久精品麻豆| 在线日韩一区二区| 欧美性视频一区二区三区| 在线免费观看日韩欧美| 在线区一区二视频| 欧美亚洲国产bt| 欧美日韩在线播放三区四区| 欧美亚洲自拍偷拍| 亚洲天堂福利av| 国产精品黄色在线观看| 亚洲欧洲性图库| 中文字幕一区二区不卡| 亚洲日本在线视频观看| 亚洲卡通欧美制服中文| 亚洲国产你懂的| 日韩avvvv在线播放| 蜜臀久久99精品久久久画质超高清 | 偷拍与自拍一区| 日本亚洲一区二区| 捆绑变态av一区二区三区| 久久97超碰色| 成人丝袜高跟foot| 日本高清视频一区二区| 在线播放欧美女士性生活| 日韩免费高清av| 国产日韩欧美一区二区三区综合| 亚洲国产精品ⅴa在线观看| 亚洲三级免费电影| 亚洲国产精品久久人人爱| 日本视频在线一区| 国产精品亚洲一区二区三区妖精| 99视频精品免费视频| 欧美在线看片a免费观看| 日韩欧美你懂的| 欧美激情一区二区三区全黄| 亚洲激情自拍视频| 久久精品国产免费| eeuss鲁片一区二区三区在线观看| 在线视频中文字幕一区二区| 欧美成人精品1314www| 中文字幕一区三区| 日韩一区欧美二区| 国产不卡在线视频| 666欧美在线视频| 国产欧美精品一区aⅴ影院| 一区二区三区加勒比av| 经典三级视频一区| 在线影院国内精品| 2021久久国产精品不只是精品| 亚洲伦理在线精品| 狠狠色综合日日| 欧美系列一区二区| 国产区在线观看成人精品| 亚洲国产精品久久人人爱| 国产91精品在线观看| 欧美丰满少妇xxxxx高潮对白| 国产精品丝袜黑色高跟| 日韩中文字幕亚洲一区二区va在线| 国产精品一区二区久久精品爱涩 | av电影在线不卡| 欧美一卡二卡在线| 亚洲欧美偷拍另类a∨色屁股| 美国av一区二区| 欧美亚男人的天堂| 国产精品传媒在线| 国产一区二区美女| 日韩一区二区高清| 亚洲综合色视频| www.在线成人| 久久久久国产精品人| 日本亚洲最大的色成网站www| 色诱亚洲精品久久久久久| 国产日韩欧美精品在线| 老司机精品视频线观看86| 欧美日韩免费观看一区二区三区 | 色综合 综合色| 国产精品久久免费看| 国产一区二区三区在线观看免费视频| 精品视频在线免费看| 亚洲精品视频免费观看| 99天天综合性| 中文字幕精品在线不卡| 国产一区二区三区观看| 欧美精品一区二区三区蜜臀| 奇米综合一区二区三区精品视频| 欧美影院一区二区三区| 樱桃视频在线观看一区| 91一区二区在线| 亚洲欧洲日本在线| 99久久婷婷国产| 中文字幕在线不卡| 99视频热这里只有精品免费| 国产精品久久久久久久久免费樱桃 | 久久综合五月天婷婷伊人| 日韩在线a电影| 91麻豆精品国产91久久久久久| 亚洲一级二级在线| 欧美色综合影院| 午夜精品一区在线观看| 欧洲国产伦久久久久久久| 一区二区免费看| 欧美婷婷六月丁香综合色| 亚洲一区二区视频| 777午夜精品免费视频| 青娱乐精品视频在线| 精品国产乱码久久久久久影片| 激情小说亚洲一区| 国产亚洲综合色| 不卡免费追剧大全电视剧网站| 亚洲男人的天堂一区二区| 欧美中文一区二区三区| 视频一区二区不卡| 日韩欧美成人一区二区| 国产精一品亚洲二区在线视频| 国产精品午夜在线观看| 在线免费av一区| 秋霞午夜av一区二区三区| 久久一区二区三区国产精品| 国产91丝袜在线观看| 亚洲精品国产第一综合99久久| 日韩码欧中文字| 欧美人与性动xxxx| 狠狠狠色丁香婷婷综合久久五月| 国产精品女同一区二区三区| 色婷婷av一区二区三区软件| 日本在线不卡视频| 国产欧美日韩不卡免费| 欧美丝袜丝nylons|