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

📄 cppvector_details.html

📁 标准c/c++帮助文档
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<!-- saved from url=(0022)http://internet.e-mail -->
<HTML>
<HEAD>
  <TITLE>C++ Vectors</TITLE>
</HEAD>
<BODY BGCOLOR="FFFFFF">

<TABLE WIDTH="100%" BGCOLOR="EEEEFF"><TR><TD>
  <A HREF="index.html">cppreference.com</A> -&gt; 
  <A HREF="cppvector.html">C++ Vectors</A> -&gt;
    Details
</TD></TR></TABLE>

<H1>C++ Vectors</H1>
  
<HR>
<H2>
<A NAME="Constructors">构造函数</A></H2>
<I>语法:</I>
<TABLE BGCOLOR="CCCCFF"><TR><TD><PRE>

  vector();
  vector( size_type num, const <A HREF="containers.html">TYPE</A> &val );
  vector( const vector &from );
  vector( <A HREF="iterators.html">input_iterator</A> start, <A HREF="iterators.html">input_iterator</A> end );
</PRE></TD></TR></TABLE>
<P>
  C++ Vectors可以使用以下任意一种参数方式构造:
<UL>
  <LI>无参数 - 构造一个空的vector,
  <LI>数量(num)和值(val) - 构造一个初始放入num个值为val的元素的Vector
  <LI>vector(from) - 构造一个与vector from 相同的vector 
  <LI>迭代器(start)和迭代器(end) - 构造一个初始值为[start,end)区间元素的Vector(注:半开区间).
</UL>
  <p>举例,下面这个实例构造了一个包含5个值为42的元素的Vector</p>
  <PRE>
vector&lt;int&gt; v1( 5, 42 );
  </PRE>
  
<p></P>
<hr>
<H2>
<A NAME="Operators">运算符</A></H2>
<I>语法:</I>
<TABLE BGCOLOR="CCCCFF"><TR><TD><PRE>

  v1 == v2
  v1 != v2
  v1 <= v2
  v1 >= v2
  v1 < v2
  v1 > v2 
  v[]
</PRE></TD></TR></TABLE>
<P>
  C++ Vectors能够使用标准运算符: ==, !=, <=, >=, <, 和 >.  要访问vector中的某特定位置的元素可以使用 [] 操作符.  
</P>
<P>两个vectors被认为是相等的,如果:
<OL>
    <LI>它们具有相同的容量</LI>
    <LI>所有相同位置的元素相等.</LI>
</OL>
vectors之间大小的比较是按照词典规则.
</P>

<I>相关内容:</I>
  <STRONG> <A HREF="#at">at()</A>. </STRONG> 
  <HR>
  <H2> <A NAME="assign">assign函数</A> </H2>
  <I>语法:</I> 
  <TABLE BGCOLOR="CCCCFF">
    <TR>
      <TD>
        <PRE>

  void assign( <A HREF="iterators.html">input_iterator</A> start, <A HREF="iterators.html">input_iterator</A> end );
  void assign( size_type num, const <A HREF="containers.html">TYPE</A> &val );
</PRE>
      </TD>
    </TR>
  </TABLE>
  <P> assign() 函数要么将区间[start, end)的元素赋到当前vector,或者赋num个值为val的元素到vector中.这个函数将会清除掉为vector赋值以前的内容.</P>
  <P>&nbsp;</P>
  <HR>
  <H2> <A NAME="at">at</A>函数 </H2>
  <I>语法:</I> 
  <TABLE BGCOLOR="CCCCFF">
    <TR>
      <TD>
        <PRE>

  <A HREF="containers.html">TYPE</A> at( size_type loc );
</PRE>
      </TD>
    </TR>
  </TABLE>
  <P> at() 函数 返回当前Vector指定位置<I>loc的元素的引用</I>.  at() 函数 比 [] 运算符更加安全, 因为它不会让你去访问到Vector内越界的元素.  例如,
    考虑下面的代码:</P>
  <PRE>
vector&lt;int&gt; v( 5, 1 );

for( int i = 0; i < 10; i++ ) {
  cout << "Element " << i << " is " << v[i] << endl;
}
  
</PRE>
这段代码访问了vector末尾以后的元素,这将可能导致很危险的结果.以下的代码将更加安全:
  <PRE>
vector&lt;int&gt; v( 5, 1 );

for( int i = 0; i < 10; i++ ) {
  cout << "Element " << i << " is " << v.at(i) << endl;
}
  </PRE>
  <P>取代试图访问内存里非法值的作法,at() 函数能够辨别出访问是否越界并在越界的时候抛出一个异常.</P>
  <P><I>相关内容:</I>    <STRONG> <A HREF="#Operators"> [] 操作符</A> </STRONG>  </P>
  <HR>

  <H2> <A NAME="back">back</A> 函数 </H2>
  <I>语法:</I> 
  <TABLE BGCOLOR="CCCCFF">
    <TR>
      <TD>
        <PRE>

  <A HREF="containers.html">TYPE</A> back();
</PRE>
      </TD>
    </TR>
  </TABLE>
  <P>back() 函数返回当前vector最末一个元素的引用.例如: </P>
  <PRE>
vector&lt;int&gt; v;

for( int i = 0; i < 5; i++ ) {
  v.push_back(i);
}

cout << "The first element is " << v.front() 
     << " and the last element is " << v.back() << endl;
  </PRE>
  <P>这段代码产生如下结果:</P>
  <PRE>
The first element is 0 and the last element is 4
  </PRE>
  <I>相关内容:</I>  <STRONG> <A HREF="#front">front().</A> </STRONG>
  <HR>

  <H2> <A NAME="begin">begin</A> 函数 </H2>
  <I>语法:</I> 
  <TABLE BGCOLOR="CCCCFF">
    <TR>
      <TD>
        <PRE>

  <A HREF="iterators.html">iterator</A> begin();
</PRE>
      </TD>
    </TR>
  </TABLE>
  <P>begin()函数返回一个指向当前vector起始元素的<A HREF="iterators.html">迭代器</A>.例如,下面这段使用了一个迭代器来显示出vector中的所有元素:</P>
  <PRE>
vector&lt;int&gt; v1( 5, 789 );
vector&lt;int&gt;::iterator it;
for( it = v1.begin(); it != v1.end(); it++ )
  cout << *it << endl;
</PRE>

  <I>相关内容:</I>  <STRONG> <A HREF="#end">end().</A> </STRONG>
  <HR>

  <H2> <A NAME="capacity">capacity</A> 函数 </H2>
  <I>语法:</I> 
  <TABLE BGCOLOR="CCCCFF">
    <TR>
      <TD>
        <PRE>

  size_type capacity();
</PRE>
      </TD>
    </TR>
  </TABLE>
  <P>  capacity() 函数 返回当前vector在重新进行内存分配以前所能容纳的元素数量.</P>
  <HR>
  <H2> <A NAME="clear">clear</A> 函数 </H2>
  <I>语法:</I> 
  <TABLE BGCOLOR="CCCCFF">
    <TR>
      <TD>
        <PRE>

  void clear();
</PRE>
      </TD>
    </TR>
  </TABLE>
  <P>clear()函数删除当前vector中的所有元素.</P>
  <HR>
  <H2> <A NAME="empty">empty</A> 函数 </H2>
  <I>语法:</I> 
  <TABLE BGCOLOR="CCCCFF">
    <TR>
      <TD>
        <PRE>

  bool empty();
</PRE>
      </TD>
    </TR>
  </TABLE>
  <P>如果当前vector没有容纳任何元素,则empty()函数返回true,否则返回false.例如,以下代码清空一个vector,并按照逆序显示所有的元素:</P>
  <PRE>vector&lt;int&gt; v;
  
for( int i = 0; i < 5; i++ ) {
    v.push_back(i);
  }
  
while( !v.empty() ) {
    cout << v.back() << endl;
    v.pop_back();
  }
  </PRE>
  <I>相关内容:</I>  <STRONG> <A HREF="#size">size()</A> </STRONG>
  <HR>

  <H2> <A NAME="end">end</A> 函数 </H2>
  <I>语法:</I> 
  <TABLE BGCOLOR="CCCCFF">
    <TR>
      <TD>
        <PRE>

  <A HREF="iterators.html">iterator</A> end();
</PRE>
      </TD>
    </TR>
  </TABLE>
  <P> end() 函数返回一个指向当前vector末尾元素的<strong>下一位置</strong>的<A HREF="iterators.html">迭代器</A>.注意,如果你要访问末尾元素,需要先将此迭代器自减1.</P>
  <P><I>相关内容:</I>    <STRONG> <A HREF="#begin">begin()</A> </STRONG>
  </P>
  <HR>

  <H2> <A NAME="erase">erase</A> 函数 </H2>
  <I>语法:</I> 
  <TABLE BGCOLOR="CCCCFF">
    <TR>
      <TD>
        <PRE>

  <A HREF="iterators.html">iterator</A> erase( <A HREF="iterators.html">iterator</A> loc );
  <A HREF="iterators.html">iterator</A> erase( <A HREF="iterators.html">iterator</A> start, <A HREF="iterators.html">iterator</A> end );
</PRE>
      </TD>
    </TR>
  </TABLE>
<PRE>erase函数要么删作指定位置loc的元素,要么删除区间[start, end)的所有元素.返回值是指向删除的最后一个元素的下一位置的迭代器.例如:</P>
// 创建一个vector,置入字母表的前十个字符
vector&lt;char&gt; alphaVector;
for( int i=0; i < 10; i++ )
    alphaVector.push_back( i + 65 );
int size = alphaVector.size();

vector&lt;char&gt;::iterator startIterator;
vector&lt;char&gt;::iterator tempIterator;

for( int i=0; i < size; i++ )
{
    tartIterator = alphaVector.begin();
    alphaVector.erase( startIterator );

    // Display the vector
    for( tempIterator = alphaVector.begin(); tempIterator != alphaVector.end(); tempIterator++ )
    cout << *tempIterator;
    cout << endl;
} </PRE>
  <P> 这段代码将会显示如下输出: </P>
  <PRE>
BCDEFGHIJ
CDEFGHIJ
DEFGHIJ
EFGHIJ
FGHIJ

⌨️ 快捷键说明

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