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
avocado  fig
ADVERTISEMENT

Conclusion

In this C++ Tutorial, we learned how to split given vector into two halves.