 # C++ Vectors

In the previous article, we discussed C++ Vectors and their implementation. In this article, we will be looking at Vector elements Accessing ad Modifiers.

Contents

## Vector Element Accessing

There are several methods to access an element of a vector. Let’s look at some of them.

• Reference operator [i] – Returns a reference to the element at position ‘i’ in the vector.
• at(i) – Returns a reference to the element at position ‘i’ in the vector.
• front() – Returns a reference to the first element in the vector.
• back() – Return a reference to the last element in the vector.
• data() – Returns a direct pointer to the memory array used internally by the vector to store its owned elements.

Let’s look at an example to use these methods:

```// C++ program to illustrate the
// element access in vector
#include <bits/stdc++.h>
using namespace std;

int main()
{
vector<int> g1;

for (int i = 1; i <= 10; i++)
g1.push_back(i * 10);

cout << "\nReference operator [g] : g1 = " << g1;

cout << "\nat : g1.at(4) = " << g1.at(4);

cout << "\nfront() : g1.front() = " << g1.front();

cout << "\nback() : g1.back() = " << g1.back();

// pointer to the first element
int* pos = g1.data();

cout << "\nThe first element is " << *pos;
return 0;
}
```

Output:

``````Reference operator [g] : g1 = 30
at : g1.at(4) = 50
front() : g1.front() = 10
back() : g1.back() = 100
The first element is 10``````

## Vector Modifiers

The modifiers are used to manipulate the vector by adding or removing elements. The following are some of the vector modifiers.

• assign() – It assigns new values to the vector elements by replacing old ones
• push_back() – It is used to push the elements into a vector from the back
• pop_back() – It is used to pop the elements from the back of the vector
• insert() – It inserts new elements before the element at the specified position
• erase() – It is used to remove elements from a container from the specified position or range
• swap() – It is used to swap the contents of two vectors of the same type. Sizes may differ
• clear() – It is used to remove all the elements of the vector container
• emplace() – It extends the container by inserting a new element at the position specified
• emplace_back() – It is used to insert a new element into the vector container, and the new element is added to the end of the vector

Let’s look at an example of vector manipulation:

```// C++ program to illustrate the
// Modifiers in vector
#include <bits/stdc++.h>
#include <vector>
using namespace std;

int main()
{
// Assign vector
vector<int> v;

// fill the array with 10 five times
v.assign(5, 10);

cout << "The vector elements are: ";
for (int i = 0; i < v.size(); i++)
cout << v[i] << " ";

// inserts 15 to the last position
v.push_back(15);
int n = v.size();
cout << "\nThe last element is: " << v[n - 1];

// removes last element
v.pop_back();

// prints the vector
cout << "\nThe vector elements are: ";
for (int i = 0; i < v.size(); i++)
cout << v[i] << " ";

// inserts 5 at the beginning
v.insert(v.begin(), 5);

cout << "\nThe first element is: " << v;

// removes the first element
v.erase(v.begin());

cout << "\nThe first element is: " << v;

// inserts at the beginning
v.emplace(v.begin(), 5);
cout << "\nThe first element is: " << v;

// Inserts 20 at the end
v.emplace_back(20);
n = v.size();
cout << "\nThe last element is: " << v[n - 1];

// erases the vector
v.clear();
cout << "\nVector size after erase(): " << v.size();

// two vector to perform swap
vector<int> v1, v2;
v1.push_back(1);
v1.push_back(2);
v2.push_back(3);
v2.push_back(4);

cout << "\n\nVector 1: ";
for (int i = 0; i < v1.size(); i++)
cout << v1[i] << " ";

cout << "\nVector 2: ";
for (int i = 0; i < v2.size(); i++)
cout << v2[i] << " ";

// Swaps v1 and v2
v1.swap(v2);

cout << "\nAfter Swap \nVector 1: ";
for (int i = 0; i < v1.size(); i++)
cout << v1[i] << " ";

cout << "\nVector 2: ";
for (int i = 0; i < v2.size(); i++)
cout << v2[i] << " ";
}
```

Output:

``````The vector elements are: 10 10 10 10 10
The last element is: 15
The vector elements are: 10 10 10 10 10
The first element is: 5
The first element is: 10
The first element is: 5
The last element is: 20
Vector size after erase(): 0

Vector 1: 1 2
Vector 2: 3 4
After Swap
Vector 1: 3 4
Vector 2: 1 2``````

That is all for this article. Hope you got a good understanding of vectors and their usage along with different methods used on the vectors. 