C++ <vector> - vector() Function
The C++ vector::vector function is used to construct a vector object, initializing its contents depending on the version of constructor used:
Syntax
//default version - construct an empty //container with no elements explicit vector (const allocator_type& alloc = allocator_type()); //fill version - construct a container //with n elements, each equal to val explicit vector (size_type n, const value_type& val = value_type(), const allocator_type& alloc = allocator_type()); //range version - Constructs a container with //elements as the range [first,last) template <class InputIterator> vector (InputIterator first, InputIterator last, const allocator_type& alloc = allocator_type()); //copy version - copies all elements //of x into the container vector (const vector& x);
//default version - construct an empty //container with no elements explicit vector (const allocator_type& alloc = allocator_type()); //fill version - construct a container //with n elements, each equal to val explicit vector (size_type n); vector (size_type n, const value_type& val, const allocator_type& alloc = allocator_type()); //range version - Constructs a container with //elements as the range [first,last) template <class InputIterator> vector (InputIterator first, InputIterator last, const allocator_type& alloc = allocator_type()); //copy version - copies all elements //of x into the container vector (const vector& x); vector (const vector& x, const allocator_type& alloc); //move version - moves elements of x //into the container vector (vector&& x); vector (vector&& x, const allocator_type& alloc); //initializer list version - copies all //elements of il into the container vector (initializer_list<value_type> il, const allocator_type& alloc = allocator_type());
//default version - construct an empty //container with no elements vector(); explicit vector (const allocator_type& alloc); //fill version - construct a container //with n elements, each equal to val explicit vector (size_type n, const allocator_type& alloc = allocator_type()); vector (size_type n, const value_type& val, const allocator_type& alloc = allocator_type()); //range version - Constructs a container with //elements as the range [first,last) template <class InputIterator> vector (InputIterator first, InputIterator last, const allocator_type& alloc = allocator_type()); //copy version - copies all elements //of x into the container vector (const vector& x); vector (const vector& x, const allocator_type& alloc); //move version - moves elements of x //into the container vector (vector&& x); vector (vector&& x, const allocator_type& alloc); //initializer list version - copies all //elements of il into the container vector (initializer_list<value_type> il, const allocator_type& alloc = allocator_type());
Parameters
alloc |
Specify the Allocator object. The container keeps and uses an internal copy of this allocator. |
n |
Specify the number of elements in the container at construction. |
val |
Specify the value to fill the container with. |
first |
Specify initial position of the input iterator of the range. The range used is [first,last). |
last |
Specify final position of the input iterator of the range. The range used is [first,last). |
x |
Specify a vector object of same type. |
il |
Specify an initializer_list object. |
Return Value
Constructor never returns value.
Time Complexity
Constant i.e, Θ(1), for default version and move version.
For all the other cases, Linear i.e, Θ(n).
Example: using default and fill version
In the example below, the vector::vector function is used to construct a vector object.
#include <iostream> #include <vector> using namespace std; int main (){ //default version - construct an empty vector vector<int> vec1; vector<int>::iterator it; //fill version - construct a vector //with 5 elements each equal to 100 vector<int> vec2(5, 100); cout<<"vec1 contains: "; for(it = vec1.begin(); it != vec1.end(); ++it) cout<<*it<<" "; cout<<"\nvec2 contains: "; for(it = vec2.begin(); it != vec2.end(); ++it) cout<<*it<<" "; return 0; }
The output of the above code will be:
vec1 contains: vec2 contains: 100 100 100 100 100
Example: using range and copy version
A vector can also be constructed using range or copy version. Consider the following example:
#include <iostream> #include <vector> using namespace std; int main (){ vector<int> vec1{100, 200, 300}; vector<int>::iterator it; //range version - construct vec2 using range vector<int> vec2(vec1.begin(), vec1.end()); //copy version - construct vec3 from vec1 vector<int> vec3(vec1); cout<<"vec2 contains: "; for(it = vec2.begin(); it != vec2.end(); ++it) cout<<*it<<" "; cout<<"\nvec3 contains: "; for(it = vec3.begin(); it != vec3.end(); ++it) cout<<*it<<" "; return 0; }
The output of the above code will be:
vec2 contains: 100 200 300 vec3 contains: 100 200 300
Example: using move version
Using the move version of vector, the content of one vector can be moved to another vector. Consider the following example:
#include <iostream> #include <vector> using namespace std; int main (){ vector<int> vec1{10, 20, 30, 40, 50}; vector<int>::iterator it; cout<<"vec1 contains: "; for(it = vec1.begin(); it != vec1.end(); ++it) cout<<*it<<" "; //moving all content of vec1 into vec2 vector<int> vec2(move(vec1)); cout<<"\nvec1 contains: "; for(it = vec1.begin(); it != vec1.end(); ++it) cout<<*it<<" "; cout<<"\nvec2 contains: "; for(it = vec2.begin(); it != vec2.end(); ++it) cout<<*it<<" "; return 0; }
The output of the above code will be:
vec1 contains: 10 20 30 40 50 vec1 contains: vec2 contains: 10 20 30 40 50
Example: using initializer list version
The initializer list can also be used to assign values into a vector container. Consider the example below:
#include <iostream> #include <vector> using namespace std; int main (){ //creating initializer list initializer_list<int> ilist = {15, 30, 45, 60, 75}; //initializer list version - copies all //elements of ilist into the container vector<int> vec(ilist); vector<int>::iterator it; cout<<"vec contains: "; for(it = vec.begin(); it != vec.end(); ++it) cout<<*it<<" "; return 0; }
The output of the above code will be:
vec contains: 15 30 45 60 75
❮ C++ <vector> Library