The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
 lang="en" dir="ltr">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>
    clear    [C++ Reference]
  </title>

  <meta name="generator" content="DokuWiki Release 2009-12-25c &quot;Lemming&quot;" />
<meta name="robots" content="index,follow" />
<meta name="date" content="2010-03-08T12:59:31-0800" />
<meta name="keywords" content="stl,vector,clear" />
<link rel="search" type="application/opensearchdescription+xml" href="/wiki/lib/exe/opensearch.php" title="C++ Reference" />
<link rel="start" href="/wiki/" />
<link rel="contents" href="/wiki/stl/vector/clear?do=index" title="Index" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="/wiki/feed.php?mode=list&amp;ns=stl:vector" />
<link rel="edit" title="Edit this page" href="/wiki/stl/vector/clear?do=edit" />
<link rel="alternate" type="text/html" title="Plain HTML" href="/wiki/_export/xhtml/stl/vector/clear" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="/wiki/_export/raw/stl/vector/clear" />
<link rel="canonical" href="http://www.cppreference.com/wiki/stl/vector/clear" />
<link rel="stylesheet" media="all" type="text/css" href="/wiki/lib/exe/css.php?s=all&amp;t=custom1&amp;tseed=1272971091" />
<link rel="stylesheet" media="screen" type="text/css" href="/wiki/lib/exe/css.php?t=custom1&amp;tseed=1272971091" />
<link rel="stylesheet" media="print" type="text/css" href="/wiki/lib/exe/css.php?s=print&amp;t=custom1&amp;tseed=1272971091" />
<script type="text/javascript" charset="utf-8" ><!--//--><![CDATA[//><!--
var NS='stl:vector';var JSINFO = {"id":"stl:vector:clear","namespace":"stl:vector"};
//--><!]]></script>
<script type="text/javascript" charset="utf-8" src="/wiki/lib/exe/js.php?tseed=1272971091" ></script>

  <link rel="shortcut icon" href="/wiki/lib/tpl/custom1/images/favicon.png" />

  </head>

<body>
<div class="dokuwiki">
  
  <div class="stylehead">

    <div class="breadcrumbs">
      <span class="bchead">You are here: </span><a href="../../start.html"  title="start">C++ Reference</a> &raquo; <a href="../../stl/start.html"  title="stl:start">C++ Standard Template Library</a> &raquo; <a href="../../stl/vector/start.html"  title="stl:vector:start">C++ Vectors</a> &raquo; <a href="../../stl/vector/clear.html"  title="stl:vector:clear">clear</a>    </div>
    
  </div>


  
  
  <div class="page">

    <script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-2828341-1";
urchinTracker();
</script>
    <!-- wikipage start -->
    


<h2><a name="clear" id="clear">clear</a></h2>
<div class="level2">

<p>
Syntax:
</p>
<pre class="c code c++" style="font-family:monospace;">    <span class="co2">#include &lt;vector&gt;</span>
    <span class="kw4">void</span> clear<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre>
<p>
The function clear() deletes all the elements stored in the vector.
If the elements of the vector are objects, the member function &#039;clear()&#039; will call the corresponding <a href="../../destructor.html" class="wikilink2" title="destructor" rel="nofollow">destructor</a> of each element stored in the vector. However, if the elements of the vector are pointers to objects, this function will not call the corresponding destructors. In this second scenario, to completely delete all the elements from the vector, a loop similar to the following one should be provided:
</p>
<pre class="c code c++" style="font-family:monospace;">    std<span class="sy0">::</span><span class="me2">vector</span><span class="sy0">&lt;</span>SomeObject<span class="sy0">*&gt;</span> aVector<span class="sy0">;</span>
    <span class="br0">&#91;</span>...<span class="br0">&#93;</span>  <span class="co1">//The elements of the vector are created with the operand 'new' at some point in the program</span>
    <span class="kw1">for</span><span class="br0">&#40;</span><span class="kw4">int</span> i<span class="sy0">=</span>0 <span class="sy0">;</span> i<span class="sy0">&lt;</span>aVector.<span class="me1">size</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">;</span> i<span class="sy0">++</span><span class="br0">&#41;</span>
        delete aVector<span class="br0">&#91;</span>i<span class="br0">&#93;</span><span class="sy0">;</span>
    aVector.<span class="me1">clear</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre>
<p>
After a call to clear, the vector&#039;s new <a href="../../stl/vector/size.html" class="wikilink1" title="stl:vector:size">size</a> will be zero. The vector&#039;s <a href="../../stl/vector/capacity.html" class="wikilink1" title="stl:vector:capacity">capacity</a> however, will not be changed, and the vector will not release its allocated memory.
</p>

<p>
If you want to empty a vector of all of its elements, as well as its capacity, then you can use the swap trick (this trick does not work with all environments e.g. not with Intel Compiler 10.0.69 and LINUX 2.6.9-89 x64):

</p>
<pre class="c code c++" style="font-family:monospace;">    std<span class="sy0">::</span><span class="me2">vector</span> aVector<span class="sy0">;</span>
    <span class="br0">&#91;</span>...<span class="br0">&#93;</span>
    aVector.<span class="me1">swap</span><span class="br0">&#40;</span> std<span class="sy0">::</span><span class="me2">vector</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span><span class="sy0">;</span></pre>
<p>

This will create a new temporary empty vector, which will swap with the vector you wish to empty.
</p>

<p>
clear() runs in <a href="../../complexity.html" class="wikilink1" title="complexity">linear time</a>.
</p>

<p>
Related Topics: <a href="../../stl/vector/erase.html" class="wikilink1" title="stl:vector:erase">erase</a> <a href="../../stl/vector/swap.html" class="wikilink1" title="stl:vector:swap">swap</a>
</p>

</div>

    <!-- wikipage stop -->
  </div>

  <div class="clearer">&nbsp;</div>

  
  <div class="stylefoot">

    <div class="meta">
      <div class="user">
              </div>
      <!--
      <div class="doc">
        stl/vector/clear.txt &middot; Last modified: 03/08/2010 12:59 by 137.222.103.83      </div>
      -->
    </div>

   
    </div></div></body>
</html>