Skip to main content
  1. Posts/

C++ Vector

·

Vector #

Vector is a collection of object of same type,every object has an associated index which gives access to that object. It is a container instead of an object, because it contains other objects. Also vector is a class template(c++ has both class and function templates) and NOT a type. We can use vectors without knowing what templates are but if we are interested we can check official documentation related to templates.

How to use vectors? #

We can simply include vector header file to use it.

#include<vector>

We are ready to use vectors in our code now.

Declaration and Initialisation #

Syntax for declaration of a vector is given below.

std::vector<type> variable_name;

For example, we can declare a vector of int with the name int_vec like this

std::vector<int> int_vec;

We can even create a vector of vectors.

std::vector<vector<int>> vec_vec;

We can initialise a vector in many ways. We can use {}.

std::vector<int> v{1,2,3};

Above code will initialise a vector v containing elements 1,2,3.
We can also use equality operator to initialise. For example

std::vector<int> v={1,2,3};

We have a special Initialisation for vector of n length, and all elements equal to m.

std::vector<int> v(n,m);

We can also copy a vector into other during initialisation,using vec(vec_to_be_copied) or by simply using =(equal) operator.

std::vector<int> vec1(vec_to_be_copied);
std::vector<int> vec2=vec_to_be_copied;

Adding elements to the vector #

We can add elements at runtime to the vector using push_back vector member function. It takes a value to be added as its parameter. For example look at this code

std::vector<int> v;
v.push_back(10);

Here push_back appends 10 to the vector v. Lets look at another example.

vector<int> iv;
   for (int i = 0; i < 150; i++)
      iv.push_back(i);

Here sequentially integers are being appended in vector. Also it is better to give value at runtime to the vector and initialising an empty vector instead of having a vector of predefined size(If you need a vector of predefined size, use array), unless all the elements needs to be of the same value.

Accessing elemets of a vector #

We can access the elements of vector using several different methods.
First being a simple for loop. Code below prints all the elemets of a vector.

for(auto elem : vector)
    std::cout<<elem<<std::endl;

But changes made to elem are not reflected inside vector . For that we can instead use &elem.
If you are familiar with arrays or accessing values using subscript, you can access elemets on vectors using indices too. vector[0] will return first element inside vector, vector[1] second element and so on. And to write equivalent code using indices, and for we first need to find the size of vector. That we can do using size() method.

for(auto i=0;i<vector.size();i++)
    vector[i];

However this method does not add elements