📄 inputiterator.html
字号:
n<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>Input Iterator</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>Input Iterator</H1><Table CellPadding=0 CellSpacing=0 width=100%><TR><TD Align=left><Img src = "iterators.gif" Alt="" WIDTH = "194" HEIGHT = "38" ></TD><TD Align=right><Img src = "concept.gif" Alt="" WIDTH = "194" HEIGHT = "38" ></TD></TR><TR><TD Align=left VAlign=top><b>Category</b>: iterators</TD><TD Align=right VAlign=top><b>Component type</b>: concept</TD></TR></Table><h3>Description</h3>An Input Iterator is an iterator that may be dereferenced to refer to someobject, and that may be incremented to obtain the next iterator ina sequence. Input Iterators are not required to be mutable.<h3>Refinement of</h3><A href="trivial.html">Trivial iterator</A>. <h3>Associated types</h3><Table border><TR><TD VAlign=top>Value type</TD><TD VAlign=top>The type of the value obtained by dereferencing an Input Iterator</TD></TR><TR><TD VAlign=top>Distance type</TD><TD VAlign=top>A signed integral type used to represent the distance from one iterator to another, or the number of elements in a range.</TD></tr></table><h3>Notation</h3><Table><TR><TD VAlign=top><tt>X</tt></TD><TD VAlign=top>A type that is a model of Input Iterator</TD></TR><TR><TD VAlign=top><tt>T</tt></TD><TD VAlign=top>The value type of <tt>X</tt></TD></TR><TR><TD VAlign=top><tt>i</tt>, <tt>j</tt></TD><TD VAlign=top>Object of type <tt>X</tt></TD></TR><TR><TD VAlign=top><tt>t</tt></TD><TD VAlign=top>Object of type <tt>T</tt></TD></tr></table><h3>Definitions</h3>An iterator is <i>past-the-end</i> if it points beyond the last elementof a container. Past-the-end values are nonsingular and nondereferenceable.<P>An iterator is <i>valid</i> if it is dereferenceable or past-the-end.<P>An iterator <tt>i</tt> is <i>incrementable</i> if there is a"next" iterator, that is, if <tt>++i</tt> is well-defined.Past-the-end iterators are not incrementable.<P>An Input Iterator <tt>j</tt> is <i>reachable</i> from an InputIterator <tt>i</tt> if, after applying <tt>operator++</tt> to<tt>i</tt> a finite number of times, <tt>i == j</tt>. <A href="#1">[1]</A><P>The notation <tt>[i,j)</tt> refers to a <i>range</i> of iterators beginning with<tt>i</tt> and up to but not including <tt>j</tt>.<P>The range <tt>[i,j)</tt> is a <i>valid range</i> if both <tt>i</tt> and <tt>j</tt> are valid iterators, and <tt>j</tt> is reachable from <tt>i</tt> <A href="#2">[2]</A>.<h3>Valid expressions</h3>In addition to the expressions defined in <A href="trivial.html">Trivial Iterator</A>,the following expressions must be valid.<Table border><TR><TH>Name</TH><TH>Expression</TH><TH>Type requirements</TH><TH>Return type</TH></TR><TR><TD VAlign=top>Preincrement</TD><TD VAlign=top><tt>++i</tt></TD><TD VAlign=top> </TD><TD VAlign=top><tt>X&</tt></TD></TR><TR><TD VAlign=top>Postincrement</TD><TD VAlign=top><tt>(void)i++</tt></TD><TD VAlign=top> </TD><TD VAlign=top> </TD></TR><TR><TD VAlign=top>Postincrement and dereference</TD><TD VAlign=top><tt>*i++</tt></TD><TD VAlign=top> </TD><TD VAlign=top><tt>T</tt></TD></tr></table><h3>Expression semantics</h3><Table border><TR><TH>Name</TH><TH>Expression</TH><TH>Precondition</TH><TH>Semantics</TH><TH>Postcondition</TH></TR><TR><TD VAlign=top>Dereference</TD><TD VAlign=top><tt>*t</tt></TD><TD VAlign=top><tt>i</tt> is incrementable</TD><TD VAlign=top> </TD><TD VAlign=top> </TD></TR><TR><TD VAlign=top>Preincrement</TD><TD VAlign=top><tt>++i</tt></TD><TD VAlign=top><tt>i</tt> is dereferenceable</TD><TD VAlign=top> </TD><TD VAlign=top><tt>i</tt> is dereferenceable or past-the-end <A href="#3">[3]</A> <A href="#4">[4]</A></TD></TR><TR><TD VAlign=top>Postincrement</TD><TD VAlign=top><tt>(void)i++</tt></TD><TD VAlign=top><tt>i</tt> is dereferenceable</TD><TD VAlign=top>Equivalent to <tt>(void)++i</tt></TD><TD VAlign=top><tt>i</tt> is dereferenceable or past-the-end <A href="#3">[3]</A> <A href="#4">[4]</A></TD></TR><TR><TD VAlign=top>Postincrement and dereference</TD><TD VAlign=top><tt>*i++</tt></TD><TD VAlign=top><tt>i</tt> is dereferenceable</TD><TD VAlign=top>Equivalent to <tt>{T t = *i; ++i; return t;}</tt></TD><TD VAlign=top><tt>i</tt> is dereferenceable or past-the-end <A href="#3">[3]</A> <A href="#4">[4]</A></TD></tr></table><h3>Complexity guarantees</h3>All operations are amortized constant time.<h3>Invariants</h3><h3>Models</h3><UL><LI> <A href="istream_iterator.html">istream_iterator</A></UL><h3>Notes</h3><P><A name="1">[1]</A><tt>i == j</tt> does not imply <tt>++i == ++j</tt>.<P><A name="2">[2]</A>Every iterator in a valid range <tt>[i, j)</tt> is dereferenceable,and <tt>j</tt> is either dereferenceable or past-the-end. The factthat every iterator in the range is dereferenceable follows from the factthat incrementable iterators must be dereferenceable.<P><A name="3">[3]</A>After executing <tt>++i</tt>, it is not required that copies of the old value of <tt>i</tt> be dereferenceable or that they be in the domain of <tt>operator==</tt>.<P><A name="4">[4]</A>It is not guaranteed that it is possible to pass through the same input iterator twice.<h3>See also</h3><A href="OutputIterator.html">Output Iterator</A>, <A href="Iterators.html">Iterator overview</A><!-- 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"> | </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 © 1993-2003 Silicon Graphics, Inc. All rights reserved.</TD> <TD ALIGN="CENTER" CLASS="footer"> | </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 + -