⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 temporary_buffer.html

📁 Standard Template Library (SOURCE + COMPLETE html man document)
💻 HTML
字号:
<HTML><!--  -- Copyright (c) 1996-1999  -- 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 appears 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.  --  -- Copyright (c) 1994  -- Hewlett-Packard Company  --  -- 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 appears in all copies and  -- that both that copyright notice and this permission notice appear  -- in supporting documentation.  Hewlett-Packard Company makes no  -- representations about the suitability of this software for any  -- purpose.  It is provided "as is" without express or implied warranty.  --  --><Head><Title>temporary_buffer&lt;ForwardIterator, T&gt;</Title><!-- Generated by htmldoc --></HEAD><BODY TEXT="#000000" LINK="#006600" ALINK="#003300" VLINK="#7C7F87" BGCOLOR="#FFFFFF"><A HREF="/"><IMG SRC="/images/common/sgilogo_small.gif" ALT="SGI Logo" WIDTH="80" HEIGHT="72" BORDER="0"></A><P><!--end header--><BR Clear><H1>temporary_buffer&lt;ForwardIterator, T&gt;</H1><Table CellPadding=0 CellSpacing=0 width=100%><TR><TD Align=left><Img src = "allocators.gif" Alt=""   WIDTH = "194"  HEIGHT = "38" ></TD><TD Align=right><Img src = "type.gif" Alt=""   WIDTH = "194"  HEIGHT = "38" ></TD></TR><TR><TD Align=left VAlign=top><b>Category</b>: allocators</TD><TD Align=right VAlign=top><b>Component type</b>: type</TD></TR></Table><h3>Description</h3>Some algorithms, such as <tt><A href="stable_sort.html">stable_sort</A></tt> and <tt><A href="inplace_merge.html">inplace_merge</A></tt>,are <i>adaptive</i>: they attempt to use extra temporary memory to storeintermediate results, and their run-time complexity is better if thatextra memory is available.  These algorithms use <tt>temporary_buffer</tt>to allocate that extra memory.<P><tt>temporary_buffer</tt>'s constructor takes two arguments, <tt>first</tt> and<tt>last</tt>, of type <tt>ForwardIterator</tt>; the constructor allocatesa buffer that is large enough to contain <tt>N</tt> objects of type <tt>T</tt>,where <tt>0 &lt;= N &lt;= last - first</tt> <A href="#1">[1]</A>, and it fills the buffer with objects of type <tt>T</tt>.  The member functions <tt>begin()</tt> and <tt>end()</tt> return iterators that point to the beginning and the endof the buffer.<P>Note that the elements in the buffer are guaranteed to be initialized; that is, <tt>begin()</tt> points to an object of type<tt>T</tt>, not to raw memory.   However, the initial values ofthe buffer's elements are unspecified.  You should not relyon them to be initialized to any particular value.<P><tt>temporary_buffer</tt> does not have a copy constructor, or an assignmentoperator.  Those operations would have complicated, and not terriblyuseful, semantics.<P>(Earlier versions of the STL used <tt><A href="get_temporary_buffer.html">get_temporary_buffer</A></tt> and<tt><A href="return_temporary_buffer.html">return_temporary_buffer</A></tt> instead of <tt>temporary_buffer</tt>.  <tt>temporary_buffer</tt> is more convenient, because it does not requireusing <tt><A href="uninitialized_copy.html">uninitialized_copy</A></tt>, and in some cases it is also moreefficient.  Additionally, it is much easier to write exception-safecode with <tt>temporary_buffer</tt> than with <tt><A href="get_temporary_buffer.html">get_temporary_buffer</A></tt> and<tt><A href="return_temporary_buffer.html">return_temporary_buffer</A></tt>.)<h3>Example</h3><pre>int main(){  vector&lt;int&gt; V(50);  iota(V.begin(), V.end(), 1);  temporary_buffer&lt;vector&lt;int&gt;::iterator, int&gt; buf(V.begin(), V.end());  copy(V.rbegin(), V.rbegin() + buf.size(), buf.begin());  copy(buf.begin(), buf.end(), ostream_iterator&lt;int&gt;(cout, &quot;\n&quot;));}</pre><h3>Definition</h3>Defined in the standard header <A href="memory">memory</A>, and in the nonstandardbackward-compatibility header <A href="algo.h">algo.h</A>.This class is an SGI extension; it is not part of the C++standard.<h3>Template parameters</h3><Table border><TR><TH>Parameter</TH><TH>Description</TH><TH>Default</TH></TR><TR><TD VAlign=top><tt>ForwardIterator</tt></TD><TD VAlign=top>The type of the iterators passed as arguments to   <tt>temporary_buffer</tt>'s constructor.</TD><TD VAlign=top>&nbsp;</TD></TR><TR><TD VAlign=top><tt>T</tt></TD><TD VAlign=top>The type of object stored in the temporary buffer.</TD><TD VAlign=top><tt><A href="iterator_traits.html">iterator_traits</A>&lt;ForwardIterator&gt;::value_type</tt> <A href="#2">[2]</A></TD></tr></table><h3>Model of</h3>None.  <tt>temporary_buffer</tt> is vaguely similar to a <A href="Container.html">Container</A>, but it does not provide the entire <A href="Container.html">Container</A> interface.  Inparticular, it is not a model of <A href="DefaultConstructible.html">DefaultConstructible</A> or<A href="Assignable.html">Assignable</A>.<h3>Type requirements</h3><UL><LI><tt>ForwardIterator</tt> is a model of <A href="ForwardIterator.html">Forward Iterator</A><LI><tt>ForwardIterator</tt> is mutable.<LI><tt>T</tt> has a constructor that can take a single argument of   <tt>ForwardIterator</tt>'s value type.</UL><h3>Public base classes</h3>None.<h3>Members</h3><Table border><TR><TH>Member</TH><TH>Description</TH></TR><TR><TD VAlign=top><pre>temporary_buffer(ForwardIterator first,                  ForwardIterator last)</pre></TD><TD VAlign=top>Allocates a temporary buffer that holds at most <tt>last - first</tt> elementsof type <tt>T</tt>, and constructs those elements.  The initial values ofthe elements are unspecified.  Precondition: <tt>[first, last)</tt> is avalid range.</TD></TR><TR><TD VAlign=top><tt>~temporary_buffer()</tt></TD><TD VAlign=top>Destroys the elements in the temporary buffer, and deallocatesthe buffer itself.</TD></TR><TR><TD VAlign=top><tt>T* begin()</tt></TD><TD VAlign=top>Returns a pointer to the first element in the buffer.</TD></TR><TR><TD VAlign=top><tt>T* end()</tt></TD><TD VAlign=top>Returns a pointer that points one past the last elementin the buffer.</TD></TR><TR><TD VAlign=top><tt>ptrdiff_t requested_size() const</tt></TD><TD VAlign=top>Returns the value <tt>last - first</tt>, where <tt>first</tt> and <tt>last</tt> arethe arguments that were passed to the constructor.</TD></TR><TR><TD VAlign=top><tt>ptrdiff_t size() const</tt></TD><TD VAlign=top>Returns the number of elements in the temporary buffer,<tt>end() - begin()</tt>.  The return value satisfies the constraint<tt>0 &lt;= size() &lt;= requested_size()</tt>. </TD></tr></table><h3>New members</h3><h3>Notes</h3><P><A name="1">[1]</A>The <i>requested size</i> is <tt>last - first</tt>.  The size of thetemporary buffer is never larger than the requested size, but it mightwell be smaller; the size might even be zero.  The intention is that<tt>temporary_buffer</tt> will allocate as large a buffer as is possiblewithout hurting performance.  Note that determining this maximum sizeis quite difficult: it depends on cache size, physical versus virtualmemory, heap fragmentation, and so on.  A good implementation of<tt>temporary_buffer</tt> must be nonportable.<P><A name="2">[2]</A>The <A href="iterator_traits.html">iterator_traits</A> mechanism relies on partialspecialization of templates.  If your compiler does not yetimplement this features, then you will not be able to use thisdefault parameter; you will have to provide both template arguments.<h3>See also</h3><!-- start footer --><!-- Footer Begins --><STYLE TYPE="text/css"><!--TD.footer, TD.footer A{		font-family: Arial, helvetica, sans-serif;        	font-size: 8pt;}A.home {font-family: Arial, helvetica, sans-serif;}--></STYLE><P><A CLASS="home" HREF="index.html">STL Home</A><P><TABLE WIDTH="600" CELLPADDING="0" CELLPADDING="0" BORDER="0">	<TR>	    <TD ALIGN="RIGHT" CLASS="footer"><A HREF="/company_info/terms.html" TARGET="_top">terms of use</A> | <A HREF="/company_info/privacy.html" TARGET="_top">privacy policy</A></TD>	    <TD ALIGN="CENTER" CLASS="footer">&nbsp;|&nbsp;</TD>	    <TD ALIGN="LEFT" CLASS="footer"><A HREF="/cgi-bin/feedback/" TARGET="_top">contact us</A></TD>	</TR><TR>	    <TD ALIGN="RIGHT" CLASS="footer">Copyright &copy; 1993-2003 Silicon Graphics, Inc. All rights reserved.</TD>	    <TD ALIGN="CENTER" CLASS="footer">&nbsp;|&nbsp;</TD>	    <TD ALIGN="LEFT" CLASS="footer"><A HREF="/company_info/trademarks/" TARGET="_top">Trademark Information</A></TD>	</TR></TABLE><!-- Footer Ends --><!-- end footer --><P></BODY></HTML> 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -