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>
    capacity    [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-04-08T07:24:43-0700" />
<meta name="keywords" content="stl,vector,capacity" />
<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/capacity?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/capacity?do=edit" />
<link rel="alternate" type="text/html" title="Plain HTML" href="/wiki/_export/xhtml/stl/vector/capacity" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="/wiki/_export/raw/stl/vector/capacity" />
<link rel="canonical" href="http://www.cppreference.com/wiki/stl/vector/capacity" />
<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:capacity","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/capacity.html"  title="stl:vector:capacity">capacity</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="capacity" id="capacity">capacity</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>
    size_type capacity<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="kw4">const</span><span class="sy0">;</span></pre>
<p>
The <code>capacity</code> method returns the number of elements that the vector can hold
before it will need to allocate more space.
</p>

<p>
For example, the following code uses two different methods to set the capacity
of two vectors. One method passes an argument to the constructor that initializes
the vector with 10 elements of value 0, and the other method calls the <a href="../../stl/vector/reserve.html" class="wikilink1" title="stl:vector:reserve">reserve</a> method.
However, the actual size of the vector remains zero.
</p>
<pre class="c code c++" style="font-family:monospace;">   vector<span class="sy0">&lt;</span>int<span class="sy0">&gt;</span> v1<span class="br0">&#40;</span>10<span class="br0">&#41;</span><span class="sy0">;</span>
   <a href="http://www.opengroup.org/onlinepubs/009695399/functions/cout.html"><span class="kw3">cout</span></a> <span class="sy0">&lt;&lt;</span> <span class="st0">&quot;The capacity of v1 is &quot;</span> <span class="sy0">&lt;&lt;</span> v1.<span class="me1">capacity</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">&lt;&lt;</span> endl<span class="sy0">;</span>
   <a href="http://www.opengroup.org/onlinepubs/009695399/functions/cout.html"><span class="kw3">cout</span></a> <span class="sy0">&lt;&lt;</span> <span class="st0">&quot;The size of v1 is &quot;</span> <span class="sy0">&lt;&lt;</span> v1.<span class="me1">size</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">&lt;&lt;</span> endl<span class="sy0">;</span>
   vector<span class="sy0">&lt;</span>int<span class="sy0">&gt;</span> v2<span class="sy0">;</span>
   v2.<span class="me1">reserve</span><span class="br0">&#40;</span>20<span class="br0">&#41;</span><span class="sy0">;</span>
   <a href="http://www.opengroup.org/onlinepubs/009695399/functions/cout.html"><span class="kw3">cout</span></a> <span class="sy0">&lt;&lt;</span> <span class="st0">&quot;The capacity of v2 is &quot;</span> <span class="sy0">&lt;&lt;</span> v2.<span class="me1">capacity</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">&lt;&lt;</span> endl<span class="sy0">;</span>
   <a href="http://www.opengroup.org/onlinepubs/009695399/functions/cout.html"><span class="kw3">cout</span></a> <span class="sy0">&lt;&lt;</span> <span class="st0">&quot;The size of v2 is &quot;</span> <span class="sy0">&lt;&lt;</span> v2.<span class="me1">size</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">&lt;&lt;</span> endl<span class="sy0">;</span></pre>
<p>
When run, the above code produces the following output:
</p>
<pre class="code">
   The capacity of v1 is 10
   The size of v1 is 10
   The capacity of v2 is 20
   The size of v2 is 0</pre>
<p>
C++ containers are designed to grow in size dynamically. This frees the
programmer from having to worry about storing an arbitrary number of elements
in a container. However, sometimes the programmer can improve the performance
of their program by giving hints to the compiler about the size of the containers
that the program will use. These hints come in the form of the <a href="../../stl/vector/reserve.html" class="wikilink1" title="stl:vector:reserve">reserve</a>
method and the constructor used in the above example, which tell the compiler
how large the container is expected to get.
</p>

<p>
The <code>capacity</code> method runs in <a href="../../complexity.html" class="wikilink1" title="complexity">constant time</a>.
</p>

<p>
Related Topics: <a href="../../stl/vector/reserve.html" class="wikilink1" title="stl:vector:reserve">reserve</a>, <a href="../../stl/vector/resize.html" class="wikilink1" title="stl:vector:resize">resize</a>, <a href="../../stl/vector/size.html" class="wikilink1" title="stl:vector:size">size</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/capacity.txt &middot; Last modified: 04/08/2010 07:24 by nate      </div>
      -->
    </div>

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