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

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

?? basic_string.h

?? linux下編程用 編譯軟件
?? H
?? 第 1 頁 / 共 5 頁
字號:
// Components for manipulating sequences of characters -*- C++ -*-// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005// Free Software Foundation, Inc.//// This file is part of the GNU ISO C++ Library.  This library is free// software; you can redistribute it and/or modify it under the// terms of the GNU General Public License as published by the// Free Software Foundation; either version 2, or (at your option)// any later version.// This library is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the// GNU General Public License for more details.// You should have received a copy of the GNU General Public License along// with this library; see the file COPYING.  If not, write to the Free// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,// USA.// As a special exception, you may use this file as part of a free software// library without restriction.  Specifically, if other files instantiate// templates or use macros or inline functions from this file, or you compile// this file and link it with other files to produce an executable, this// file does not by itself cause the resulting executable to be covered by// the GNU General Public License.  This exception does not however// invalidate any other reasons why the executable file might be covered by// the GNU General Public License.//// ISO C++ 14882: 21 Strings library///** @file basic_string.h *  This is an internal header file, included by other library headers. *  You should not attempt to use it directly. */#ifndef _BASIC_STRING_H#define _BASIC_STRING_H 1#pragma GCC system_header#include <bits/atomicity.h>#include <debug/debug.h>namespace std{  /**   *  @class basic_string basic_string.h <string>   *  @brief  Managing sequences of characters and character-like objects.   *   *  @ingroup Containers   *  @ingroup Sequences   *   *  Meets the requirements of a <a href="tables.html#65">container</a>, a   *  <a href="tables.html#66">reversible container</a>, and a   *  <a href="tables.html#67">sequence</a>.  Of the   *  <a href="tables.html#68">optional sequence requirements</a>, only   *  @c push_back, @c at, and array access are supported.   *   *  @doctodo   *   *   *  @if maint   *  Documentation?  What's that?   *  Nathan Myers <ncm@cantrip.org>.   *   *  A string looks like this:   *   *  @code   *                                        [_Rep]   *                                        _M_length   *   [basic_string<char_type>]            _M_capacity   *   _M_dataplus                          _M_refcount   *   _M_p ---------------->               unnamed array of char_type   *  @endcode   *   *  Where the _M_p points to the first character in the string, and   *  you cast it to a pointer-to-_Rep and subtract 1 to get a   *  pointer to the header.   *   *  This approach has the enormous advantage that a string object   *  requires only one allocation.  All the ugliness is confined   *  within a single pair of inline functions, which each compile to   *  a single "add" instruction: _Rep::_M_data(), and   *  string::_M_rep(); and the allocation function which gets a   *  block of raw bytes and with room enough and constructs a _Rep   *  object at the front.   *   *  The reason you want _M_data pointing to the character array and   *  not the _Rep is so that the debugger can see the string   *  contents. (Probably we should add a non-inline member to get   *  the _Rep for the debugger to use, so users can check the actual   *  string length.)   *   *  Note that the _Rep object is a POD so that you can have a   *  static "empty string" _Rep object already "constructed" before   *  static constructors have run.  The reference-count encoding is   *  chosen so that a 0 indicates one reference, so you never try to   *  destroy the empty-string _Rep object.   *   *  All but the last paragraph is considered pretty conventional   *  for a C++ string implementation.   *  @endif  */  // 21.3  Template class basic_string  template<typename _CharT, typename _Traits, typename _Alloc>    class basic_string    {      typedef typename _Alloc::template rebind<_CharT>::other _CharT_alloc_type;      // Types:    public:      typedef _Traits					    traits_type;      typedef typename _Traits::char_type		    value_type;      typedef _Alloc					    allocator_type;      typedef typename _CharT_alloc_type::size_type	    size_type;      typedef typename _CharT_alloc_type::difference_type   difference_type;      typedef typename _CharT_alloc_type::reference	    reference;      typedef typename _CharT_alloc_type::const_reference   const_reference;      typedef typename _CharT_alloc_type::pointer	    pointer;      typedef typename _CharT_alloc_type::const_pointer	    const_pointer;      typedef __gnu_cxx::__normal_iterator<pointer, basic_string>  iterator;      typedef __gnu_cxx::__normal_iterator<const_pointer, basic_string>                                                            const_iterator;      typedef std::reverse_iterator<const_iterator>	const_reverse_iterator;      typedef std::reverse_iterator<iterator>		    reverse_iterator;    private:      // _Rep: string representation      //   Invariants:      //   1. String really contains _M_length + 1 characters: due to 21.3.4      //      must be kept null-terminated.      //   2. _M_capacity >= _M_length      //      Allocated memory is always (_M_capacity + 1) * sizeof(_CharT).      //   3. _M_refcount has three states:      //      -1: leaked, one reference, no ref-copies allowed, non-const.      //       0: one reference, non-const.      //     n>0: n + 1 references, operations require a lock, const.      //   4. All fields==0 is an empty string, given the extra storage      //      beyond-the-end for a null terminator; thus, the shared      //      empty string representation needs no constructor.      struct _Rep_base      {	size_type		_M_length;	size_type		_M_capacity;	_Atomic_word		_M_refcount;      };      struct _Rep : _Rep_base      {	// Types:	typedef typename _Alloc::template rebind<char>::other _Raw_bytes_alloc;	// (Public) Data members:	// The maximum number of individual char_type elements of an	// individual string is determined by _S_max_size. This is the	// value that will be returned by max_size().  (Whereas npos	// is the maximum number of bytes the allocator can allocate.)	// If one was to divvy up the theoretical largest size string,	// with a terminating character and m _CharT elements, it'd	// look like this:	// npos = sizeof(_Rep) + (m * sizeof(_CharT)) + sizeof(_CharT)	// Solving for m:	// m = ((npos - sizeof(_Rep))/sizeof(CharT)) - 1	// In addition, this implementation quarters this amount.	static const size_type	_S_max_size;	static const _CharT	_S_terminal;	// The following storage is init'd to 0 by the linker, resulting        // (carefully) in an empty string with one reference.        static size_type _S_empty_rep_storage[];        static _Rep&        _S_empty_rep()        {	  void* __p = reinterpret_cast<void*>(&_S_empty_rep_storage);	  return *reinterpret_cast<_Rep*>(__p);	}        bool	_M_is_leaked() const        { return this->_M_refcount < 0; }        bool	_M_is_shared() const        { return this->_M_refcount > 0; }        void	_M_set_leaked()        { this->_M_refcount = -1; }        void	_M_set_sharable()        { this->_M_refcount = 0; }	void	_M_set_length_and_sharable(size_type __n)	{ 	  this->_M_set_sharable();  // One reference.	  this->_M_length = __n;	  traits_type::assign(this->_M_refdata()[__n], _S_terminal);	  // grrr. (per 21.3.4)	  // You cannot leave those LWG people alone for a second.	}	_CharT*	_M_refdata() throw()	{ return reinterpret_cast<_CharT*>(this + 1); }	_CharT*	_M_grab(const _Alloc& __alloc1, const _Alloc& __alloc2)	{	  return (!_M_is_leaked() && __alloc1 == __alloc2)	          ? _M_refcopy() : _M_clone(__alloc1);	}	// Create & Destroy	static _Rep*	_S_create(size_type, size_type, const _Alloc&);	void	_M_dispose(const _Alloc& __a)	{#ifndef _GLIBCXX_FULLY_DYNAMIC_STRING	  if (__builtin_expect(this != &_S_empty_rep(), false))#endif	    if (__gnu_cxx::__exchange_and_add(&this->_M_refcount, -1) <= 0)	      _M_destroy(__a);	}  // XXX MT	void	_M_destroy(const _Alloc&) throw();	_CharT*	_M_refcopy() throw()	{#ifndef _GLIBCXX_FULLY_DYNAMIC_STRING	  if (__builtin_expect(this != &_S_empty_rep(), false))#endif            __gnu_cxx::__atomic_add(&this->_M_refcount, 1);	  return _M_refdata();	}  // XXX MT	_CharT*	_M_clone(const _Alloc&, size_type __res = 0);      };      // Use empty-base optimization: http://www.cantrip.org/emptyopt.html      struct _Alloc_hider : _Alloc      {	_Alloc_hider(_CharT* __dat, const _Alloc& __a)	: _Alloc(__a), _M_p(__dat) { }	_CharT* _M_p; // The actual data.      };    public:      // Data Members (public):      // NB: This is an unsigned type, and thus represents the maximum      // size that the allocator can hold.      ///  Value returned by various member functions when they fail.      static const size_type	npos = static_cast<size_type>(-1);    private:      // Data Members (private):      mutable _Alloc_hider	_M_dataplus;      _CharT*      _M_data() const      { return  _M_dataplus._M_p; }      _CharT*      _M_data(_CharT* __p)      { return (_M_dataplus._M_p = __p); }      _Rep*      _M_rep() const      { return &((reinterpret_cast<_Rep*> (_M_data()))[-1]); }      // For the internal use we have functions similar to `begin'/`end'      // but they do not call _M_leak.      iterator      _M_ibegin() const      { return iterator(_M_data()); }      iterator      _M_iend() const      { return iterator(_M_data() + this->size()); }      void      _M_leak()    // for use in begin() & non-const op[]      {	if (!_M_rep()->_M_is_leaked())	  _M_leak_hard();      }      size_type      _M_check(size_type __pos, const char* __s) const      {	if (__pos > this->size())	  __throw_out_of_range(__N(__s));	return __pos;      }      void      _M_check_length(size_type __n1, size_type __n2, const char* __s) const      {	if (this->max_size() - (this->size() - __n1) < __n2)	  __throw_length_error(__N(__s));      }      // NB: _M_limit doesn't check for a bad __pos value.      size_type      _M_limit(size_type __pos, size_type __off) const      {	const bool __testoff =  __off < this->size() - __pos;	return __testoff ? __off : this->size() - __pos;      }      // True if _Rep and source do not overlap.      bool      _M_disjunct(const _CharT* __s) const      {	return (less<const _CharT*>()(__s, _M_data())		|| less<const _CharT*>()(_M_data() + this->size(), __s));      }      // When __n = 1 way faster than the general multichar      // traits_type::copy/move/assign.      static void      _M_copy(_CharT* __d, const _CharT* __s, size_type __n)      {	if (__n == 1)	  traits_type::assign(*__d, *__s);	else	  traits_type::copy(__d, __s, __n);      }      static void      _M_move(_CharT* __d, const _CharT* __s, size_type __n)      {	if (__n == 1)	  traits_type::assign(*__d, *__s);	else	  traits_type::move(__d, __s, __n);	        }      static void      _M_assign(_CharT* __d, size_type __n, _CharT __c)      {	if (__n == 1)	  traits_type::assign(*__d, __c);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美日韩在线| 久久精品国产色蜜蜜麻豆| 亚洲第一狼人社区| 韩国精品一区二区| 欧美在线你懂的| 国产欧美日韩亚州综合| 蜜臀久久久久久久| 91农村精品一区二区在线| 精品动漫一区二区三区在线观看| 最新日韩av在线| 国产成人在线影院 | 蜜桃久久精品一区二区| av电影在线观看不卡| 欧美成人精品二区三区99精品| 亚洲视频1区2区| 懂色av一区二区三区免费看| 欧美精选一区二区| 一级精品视频在线观看宜春院 | 天堂成人国产精品一区| 欧美主播一区二区三区美女| 国产精品免费视频网站| 国产伦精品一区二区三区免费迷| 884aa四虎影成人精品一区| 曰韩精品一区二区| 成人动漫一区二区在线| 日本一区二区三区四区在线视频| 精品一区二区三区蜜桃| 欧美一区二区三区电影| 午夜精品影院在线观看| 欧美日韩精品是欧美日韩精品| 亚洲久草在线视频| 色综合激情五月| 一区二区三区产品免费精品久久75| av成人免费在线| 最新日韩av在线| 欧美在线|欧美| 亚洲一区二区三区视频在线| 欧美综合一区二区三区| 亚洲国产欧美在线人成| 精品视频在线视频| 午夜精品久久久久影视| 8x8x8国产精品| 久久99精品视频| 久久久精品2019中文字幕之3| 免费视频一区二区| 久久久无码精品亚洲日韩按摩| 国产一区二区h| 亚洲人精品午夜| 精品视频一区二区不卡| 午夜精品久久久久久久99水蜜桃| 欧美年轻男男videosbes| 毛片av一区二区| 精品国产乱码久久| 99久久精品免费看国产| 一区二区三区鲁丝不卡| 欧美一区二区三区系列电影| 经典一区二区三区| 中文字幕av一区二区三区免费看| 成人app软件下载大全免费| 亚洲免费观看高清| 在线成人小视频| 国产成人精品午夜视频免费| 国产精品福利影院| 欧美美女bb生活片| 国产在线观看免费一区| 亚洲欧洲国产专区| 欧美日韩国产成人在线免费| 国产呦精品一区二区三区网站| 日本一区二区视频在线观看| 欧美视频中文字幕| 国产精品一区二区在线播放 | 大陆成人av片| 一二三区精品视频| 久久伊人中文字幕| 欧美日韩一区中文字幕| 精品中文字幕一区二区| 国产精品国产a| 精品噜噜噜噜久久久久久久久试看| 成人午夜视频福利| 日本午夜精品一区二区三区电影| 亚洲视频一区在线| 69堂成人精品免费视频| 成人综合婷婷国产精品久久| 五月天国产精品| 中文字幕一区二区三区色视频| 欧美精品aⅴ在线视频| 97久久超碰精品国产| 黄网站免费久久| 亚洲电影你懂得| 亚洲乱码国产乱码精品精的特点| 欧美成人精品高清在线播放| 欧美日韩中文精品| 99这里只有久久精品视频| 国产一区在线不卡| 人人超碰91尤物精品国产| 亚洲激情在线播放| 国产精品女同互慰在线看| 在线观看91精品国产麻豆| 色综合色狠狠综合色| 成人免费av资源| 国产一区欧美一区| 久色婷婷小香蕉久久| 婷婷开心久久网| 亚洲妇熟xx妇色黄| 亚洲最大成人综合| 洋洋成人永久网站入口| 国产精品久久久久久久久免费桃花 | 一区二区三区四区在线| 中文字幕第一区| 国产性做久久久久久| 久久亚洲捆绑美女| 久久久亚洲综合| 久久久久久久av麻豆果冻| 91麻豆精品国产| 欧美精品vⅰdeose4hd| 欧美人体做爰大胆视频| 欧美日韩一区二区三区高清| 欧美性生活大片视频| 成人精品高清在线| 国产一区二区三区在线观看免费| 中文字幕久久午夜不卡| 欧美剧情片在线观看| 欧美日韩在线三区| 亚洲欧美色一区| 久久综合久久综合亚洲| 日韩欧美在线综合网| 精品少妇一区二区三区视频免付费| 欧美一区二区三区小说| 欧美精品一区二区三区很污很色的 | 色婷婷国产精品综合在线观看| 粉嫩嫩av羞羞动漫久久久 | 国产一区二区三区四区五区入口| 久久精品国产99| 福利一区福利二区| 色哟哟国产精品| 欧美自拍丝袜亚洲| 日韩一区二区三区免费观看| 精品理论电影在线观看| 亚洲国产精品激情在线观看| 亚洲色图制服丝袜| 亚洲18影院在线观看| 美女视频网站久久| 国产激情91久久精品导航| 91在线精品秘密一区二区| 欧美午夜在线观看| 精品成人a区在线观看| |精品福利一区二区三区| 亚洲成人激情综合网| 九九视频精品免费| 99视频精品免费视频| 欧美高清视频不卡网| 国产亚洲污的网站| 亚洲一二三四区| 精品在线你懂的| 91视频一区二区三区| 91精品免费在线| 亚洲国产电影在线观看| 亚洲v中文字幕| 成人高清视频在线| 91精品免费在线观看| 亚洲欧洲日韩在线| 秋霞影院一区二区| 色综合一区二区| 日韩av不卡在线观看| 国产精品一二二区| 欧美日韩免费观看一区二区三区| 久久久久国色av免费看影院| 亚洲乱码国产乱码精品精的特点| 免费观看在线综合| 色综合天天狠狠| 久久综合久久综合九色| 亚洲一级二级三级| 成人高清免费观看| 久久先锋资源网| 日韩电影免费在线看| 91丝袜美女网| 国产精品久久久久久久久久免费看 | 日韩在线a电影| 日本久久电影网| 国产精品美女久久久久久2018| 九一久久久久久| 日韩一级片网址| 亚洲电影一级片| 欧美视频你懂的| 一区二区在线观看免费| 97久久精品人人爽人人爽蜜臀| 久久久久高清精品| 激情欧美日韩一区二区| 在线不卡中文字幕| 日韩高清国产一区在线| 欧美影视一区在线| 亚洲精品伦理在线| 色综合网站在线| 亚洲欧美日韩国产一区二区三区 | 欧美怡红院视频| 一区二区三区日韩精品| 91国在线观看| 亚洲国产裸拍裸体视频在线观看乱了 | 国产美女精品在线| 久久综合狠狠综合久久综合88|