<!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>
Vector constructors [C++ Reference]
</title>
<meta name="generator" content="DokuWiki Release 2009-12-25c "Lemming"" />
<meta name="robots" content="index,follow" />
<meta name="date" content="2009-10-19T05:39:42-0700" />
<meta name="keywords" content="stl,vector,vector_constructors" />
<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/vector_constructors?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&ns=stl:vector" />
<link rel="edit" title="Edit this page" href="/wiki/stl/vector/vector_constructors?do=edit" />
<link rel="alternate" type="text/html" title="Plain HTML" href="/wiki/_export/xhtml/stl/vector/vector_constructors" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="/wiki/_export/raw/stl/vector/vector_constructors" />
<link rel="canonical" href="http://www.cppreference.com/wiki/stl/vector/vector_constructors" />
<link rel="stylesheet" media="all" type="text/css" href="/wiki/lib/exe/css.php?s=all&t=custom1&tseed=1272971091" />
<link rel="stylesheet" media="screen" type="text/css" href="/wiki/lib/exe/css.php?t=custom1&tseed=1272971091" />
<link rel="stylesheet" media="print" type="text/css" href="/wiki/lib/exe/css.php?s=print&t=custom1&tseed=1272971091" />
<script type="text/javascript" charset="utf-8" ><!--//--><![CDATA[//><!--
var NS='stl:vector';var JSINFO = {"id":"stl:vector:vector_constructors","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="header">
<div class="pagename">
[[<a href="../../stl/vector/vector.html" title="Backlinks">Vector constructors</a>]]
</div>
<div class="logo">
<a href="http://www.cppreference.com" name="dokuwiki__top" id="dokuwiki__top" accesskey="h" title="[ALT+H]">C++ Reference</a> </div>
<div class="clearer"></div>
</div>
<div class="breadcrumbs">
<span class="bchead">You are here: </span><a href="../../start.html" title="start">C++ Reference</a> » <a href="../../stl/start.html" title="stl:start">C++ Standard Template Library</a> » <a href="../../stl/vector/start.html" title="stl:vector:start">C++ Vectors</a> » <a href="../../stl/vector/vector.html" title="stl:vector:vector_constructors">Vector constructors</a> </div>
</div>
<div class="plugin_translation"><span>Translations of this page<sup><a href="../../localization.html" class="wikilink1" title="localization">?</a></sup>:</span> <ul> <li><div class="li"><span class="curid"><a href="../../stl/vector/vector.html" class="wikilink1" title="stl:vector:vector_constructors">en</a></span></div></li> <li><div class="li"><a href="../../br-pt/stl/vector/vector.html" class="wikilink2" title="br-pt:stl:vector:vector_constructors" rel="nofollow">br-pt</a></div></li> <li><div class="li"><a href="../../cn/stl/vector/vector.html" class="wikilink1" title="cn:stl:vector:vector_constructors">cn</a></div></li> <li><div class="li"><a href="../../cz/stl/vector/vector.html" class="wikilink2" title="cz:stl:vector:vector_constructors" rel="nofollow">cz</a></div></li> <li><div class="li"><a href="../../de/stl/vector/vector.html" class="wikilink2" title="de:stl:vector:vector_constructors" rel="nofollow">de</a></div></li> <li><div class="li"><a href="../../es/stl/vector/vector.html" class="wikilink2" title="es:stl:vector:vector_constructors" rel="nofollow">es</a></div></li> <li><div class="li"><a href="../../fr/stl/vector/vector.html" class="wikilink1" title="fr:stl:vector:vector_constructors">fr</a></div></li> <li><div class="li"><a href="../../it/stl/vector/vector.html" class="wikilink1" title="it:stl:vector:vector_constructors">it</a></div></li> <li><div class="li"><a href="../../jp/stl/vector/vector.html" class="wikilink1" title="jp:stl:vector:vector_constructors">jp</a></div></li> <li><div class="li"><a href="../../nl/stl/vector/vector.html" class="wikilink2" title="nl:stl:vector:vector_constructors" rel="nofollow">nl</a></div></li> <li><div class="li"><a href="../../pl/stl/vector/vector.html" class="wikilink2" title="pl:stl:vector:vector_constructors" rel="nofollow">pl</a></div></li> <li><div class="li"><a href="../../ro/stl/vector/vector.html" class="wikilink2" title="ro:stl:vector:vector_constructors" rel="nofollow">ro</a></div></li> <li><div class="li"><a href="../../ru/stl/vector/vector.html" class="wikilink1" title="ru:stl:vector:vector_constructors">ru</a></div></li> <li><div class="li"><a href="../../sk/stl/vector/vector.html" class="wikilink2" title="sk:stl:vector:vector_constructors" rel="nofollow">sk</a></div></li> <li><div class="li"><a href="../../tr/stl/vector/vector.html" class="wikilink2" title="tr:stl:vector:vector_constructors" rel="nofollow">tr</a></div></li> <li><div class="li"><a href="../../tw/stl/vector/vector.html" class="wikilink2" title="tw:stl:vector:vector_constructors" rel="nofollow">tw</a></div></li></ul></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="vector_constructors" id="vector_constructors">Vector constructors</a></h2>
<div class="level2">
<p>
Syntax:
</p>
<pre class="c code c++" style="font-family:monospace;"> <span class="co2">#include <vector></span>
using namespace std<span class="sy0">;</span>
vector<span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span>
vector<span class="br0">(</span> <span class="kw4">const</span> vector<span class="sy0">&</span> c <span class="br0">)</span><span class="sy0">;</span>
explicit vector<span class="br0">(</span> size_type num<span class="sy0">,</span> <span class="kw4">const</span> TYPE<span class="sy0">&</span> val <span class="sy0">=</span> TYPE<span class="br0">(</span><span class="br0">)</span> <span class="br0">)</span><span class="sy0">;</span>
template<span class="sy0"><</span> typename input_iterator <span class="sy0">></span>
vector<span class="br0">(</span> input_iterator start<span class="sy0">,</span> input_iterator end <span class="br0">)</span><span class="sy0">;</span>
~vector<span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span></pre>
<p>
The default vector constructor takes no arguments, creates a new instance of
that vector.
</p>
<p>
The second constructor is a default copy constructor that can be used to create
a new vector that is a copy of the given vector c.
</p>
<p>
The third constructor creates a vector with num objects. If val is specified,
each of those objects will be given that value, otherwise, those objects are
given TYPE's default constructor's value. For example, the following code
creates a vector consisting of five copies of the integer 42:
</p>
<pre class="c code c++" style="font-family:monospace;"> vector<span class="sy0"><</span>int<span class="sy0">></span> v1<span class="br0">(</span> 5<span class="sy0">,</span> 42 <span class="br0">)</span><span class="sy0">;</span></pre>
<p>
The last constructor creates a vector that is initialized to contain the
elements between start and end. For example:
</p>
<pre class="c code c++" style="font-family:monospace;"> <span class="co1">// create a vector of random integers</span>
<a href="http://www.opengroup.org/onlinepubs/009695399/functions/cout.html"><span class="kw3">cout</span></a> <span class="sy0"><<</span> <span class="st0">"original vector: "</span><span class="sy0">;</span>
vector<span class="sy0"><</span>int<span class="sy0">></span> v<span class="sy0">;</span>
<span class="kw1">for</span><span class="br0">(</span> <span class="kw4">int</span> i <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span> i <span class="sy0"><</span> <span class="nu0">10</span><span class="sy0">;</span> <span class="sy0">++</span>i <span class="br0">)</span> <span class="br0">{</span>
<span class="kw4">int</span> num <span class="sy0">=</span> <span class="br0">(</span><span class="kw4">int</span><span class="br0">)</span> rand<span class="br0">(</span><span class="br0">)</span> <span class="sy0">%</span> <span class="nu0">10</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"><<</span> num <span class="sy0"><<</span> <span class="st0">" "</span><span class="sy0">;</span>
v.<span class="me1">push_back</span><span class="br0">(</span> num <span class="br0">)</span><span class="sy0">;</span>
<span class="br0">}</span>
<a href="http://www.opengroup.org/onlinepubs/009695399/functions/cout.html"><span class="kw3">cout</span></a> <span class="sy0"><<</span> endl<span class="sy0">;</span>
<span class="co1">// find the first element of v that is even</span>
vector<span class="sy0"><</span>int<span class="sy0">>::</span><span class="me2">iterator</span> iter1 <span class="sy0">=</span> v.<span class="me1">begin</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span>
<span class="kw1">while</span><span class="br0">(</span> iter1 <span class="sy0">!=</span> v.<span class="me1">end</span><span class="br0">(</span><span class="br0">)</span> <span class="sy0">&&</span> <span class="sy0">*</span>iter1 <span class="sy0">%</span> 2 <span class="sy0">!=</span> 0 <span class="br0">)</span> <span class="br0">{</span>
<span class="sy0">++</span>iter1<span class="sy0">;</span>
<span class="br0">}</span>
<span class="co1">// find the last element of v that is even</span>
vector<span class="sy0"><</span>int<span class="sy0">>::</span><span class="me2">iterator</span> iter2 <span class="sy0">=</span> v.<span class="me1">end</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span>
<span class="kw1">do</span> <span class="br0">{</span>
<span class="sy0">--</span>iter2<span class="sy0">;</span>
<span class="br0">}</span> <span class="kw1">while</span><span class="br0">(</span> iter2 <span class="sy0">!=</span> v.<span class="me1">begin</span><span class="br0">(</span><span class="br0">)</span> <span class="sy0">&&</span> <span class="sy0">*</span>iter2 <span class="sy0">%</span> 2 <span class="sy0">!=</span> 0 <span class="br0">)</span><span class="sy0">;</span>
<span class="co1">// only proceed if we find both numbers</span>
<span class="kw1">if</span><span class="br0">(</span> iter1 <span class="sy0">!=</span> v.<span class="me1">end</span><span class="br0">(</span><span class="br0">)</span> <span class="sy0">&&</span> iter2 <span class="sy0">!=</span> v.<span class="me1">begin</span><span class="br0">(</span><span class="br0">)</span> <span class="br0">)</span> <span class="br0">{</span>
<a href="http://www.opengroup.org/onlinepubs/009695399/functions/cout.html"><span class="kw3">cout</span></a> <span class="sy0"><<</span> <span class="st0">"first even number: "</span> <span class="sy0"><<</span> <span class="sy0">*</span>iter1 <span class="sy0"><<</span> <span class="st0">", last even number: "</span> <span class="sy0"><<</span> <span class="sy0">*</span>iter2 <span class="sy0"><<</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"><<</span> <span class="st0">"new vector: "</span><span class="sy0">;</span>
vector<span class="sy0"><</span>int<span class="sy0">></span> v2<span class="br0">(</span> iter1<span class="sy0">,</span> iter2 <span class="br0">)</span><span class="sy0">;</span>
<span class="kw1">for</span><span class="br0">(</span> <span class="kw4">int</span> i <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span> i <span class="sy0"><</span> v2.<span class="me1">size</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span> <span class="sy0">++</span>i <span class="br0">)</span> <span class="br0">{</span>
<a href="http://www.opengroup.org/onlinepubs/009695399/functions/cout.html"><span class="kw3">cout</span></a> <span class="sy0"><<</span> v2<span class="br0">[</span>i<span class="br0">]</span> <span class="sy0"><<</span> <span class="st0">" "</span><span class="sy0">;</span>
<span class="br0">}</span>
<a href="http://www.opengroup.org/onlinepubs/009695399/functions/cout.html"><span class="kw3">cout</span></a> <span class="sy0"><<</span> endl<span class="sy0">;</span>
<span class="br0">}</span></pre>
<p>
When run, this code displays the following output:
</p>
<pre class="code">
original vector: 1 9 7 9 2 7 2 1 9 8
first even number: 2, last even number: 8
new vector: 2 7 2 1 9</pre>
<p>
The last constructor provides for a handy way to initialize an STL vector with data from an old style array.
</p>
<p>
Example:
</p>
<pre class="c code c++" style="font-family:monospace;"> <span class="kw4">float</span> fp_values<span class="br0">[</span><span class="br0">]</span> <span class="sy0">=</span> <span class="br0">{</span> 0.1<span class="sy0">,</span> 0.2 <span class="sy0">,</span> 0.3<span class="sy0">,</span> 0.4<span class="br0">}</span><span class="sy0">;</span> <span class="co1">// somewhere an array is created</span>
...
<span class="me1">vector</span><span class="sy0"><</span>float<span class="sy0">></span> fp_vector<span class="br0">(</span>fp_values<span class="sy0">,</span>fp_values<span class="sy0">+</span>4<span class="br0">)</span><span class="sy0">;</span> <span class="co1">// elements in the array are copied into fp_vector</span></pre>
<p>
Keep in mind that pointers are just a possible elementary form of iterators.
</p>
<p>
All of these constructors run in <a href="../../complexity.html" class="wikilink1" title="complexity">linear time</a> except the first, which runs in
<a href="../../complexity.html" class="wikilink1" title="complexity">constant time</a>.
</p>
<p>
The default destructor is called for each element when the vector is destroyed.
</p>
</div>
<div class="secedit"><form class="button btn_secedit" method="post" action="/wiki/stl/vector/vector_constructors"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="lines" value="3-" /><input type="hidden" name="rev" value="1255955982" /><input type="submit" value="Edit" class="button" title="Vector constructors" /></div></form></div>
<!-- wikipage stop -->
</div>
<div class="clearer"> </div>
<div class="stylefoot">
<div class="meta">
<div class="user">
</div>
<!--
<div class="doc">
stl/vector/vector_constructors.txt · Last modified: 10/19/2009 05:39 by mxmanghi </div>
-->
</div>
<div class="bar" id="bar__bottom">
<div class="bar-left" id="bar__bottomleft">
<a href="../../stl/vector/vector.html" class="action edit" accesskey="e" rel="nofollow">Edit this page</a> •
<a href="../../stl/vector/vector.html" class="action revisions" accesskey="o" rel="nofollow">Old revisions</a> </div>
<div class="bar-right" id="bar__bottomright">
•
•
•
<a href="../../stl/vector/vector.html" class="action login" rel="nofollow">Login</a> •
<a href="../../stl/vector/vector.html" class="action index" accesskey="x" rel="nofollow">Index</a> •
<a href="../../stl/vector/vector.html" class="action recent" accesskey="r" rel="nofollow">Recent changes</a> •
<a href="../../feed.php.html" title="Recent changes RSS feed">RSS</a> •
<a href='http://creativecommons.org/licenses/by/3.0/us/' title='Creative Commons license'>cc</a> •
<form action="/wiki/" accept-charset="utf-8" class="search" id="dw__search"><div class="no"><input type="hidden" name="do" value="search" /><input type="text" id="qsearch__in" accesskey="f" name="id" class="edit" title="[ALT+F]" /><input type="submit" value="Search" class="button" title="Search" /><div id="qsearch__out" class="ajax_qsearch JSpopup"></div></div></form>
</div>
<div class="clearer"></div>
</div>
</div>
</div>
<div class="no"><img src="/wiki/lib/exe/indexer.php?id=stl%3Avector%3Avector_constructors&1273197015" width="1" height="1" alt="" /></div>
</body>
</html>