In this C++ tutorial, you shall learn how to split a vector into two halves (equal halves if even sized), with example programs.

## Split Vector into two halves in C++

To split a vector into two halves, equal length halves if the length is even or nearly equal if the length is odd, we can use vector iterators vector::begin(), vector::size(), and vector::end() iterators as shown the following code snippet.

The code to split a vector `v` into two vectors `v1` and `v2` of equal lengths or nearly equal lengths is

```vector<string> v1 (v.begin(), v.begin() + v.size()/2);
vector<string> v2 (v.begin() + v.size()/2, v.end());```

The first vector is from beginning to mid way of the original vector. The second vector is from mid way to end of the original vector.

For example, if `{"apple", "banana", "avocado", "fig" }` is given vector, we can split this vector into two vectors `{ "apple", "banana" `} and `{ "avocado", "fig" }`.

## C++ Program

In the following program, we take a vector in `v` and split this into two equal halves `v1` and `v2`.

main.cpp

```#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
//string vector
vector<string> v { "apple", "banana", "avocado", "fig" };

//split vector into two halves
vector<string> v1 (v.begin(), v.begin() + v.size()/2);
vector<string> v2 (v.begin() + v.size()/2, v.end());

//print result vector
cout << "First Half" << endl;
for ( auto& element : v1 ) {
cout << element << "  ";
}
cout << endl << endl << "Second Half" << endl;
for ( auto& element : v2 ) {
cout << element << "  ";
}
}```

Output

```First Half
apple  banana

Second Half