Melhor maneira de dividir um vetor em duas matrizes menores?

O que estou tentando fazer:

Estou tentando dividir um vetor em duas matrizes separadas. O vetor int atual contém um elemento por linha em um arquivo de texto. O arquivo de texto é uma lista de números inteiros aleatório

Como estou planejando fazê-lo:

Minha idéia atual é criar duas matrizes int regulares, iterar sobre o vetor inteiro e copiar n / 2 elementos para cada uma das matrize

O que eu gostaria de saber:

Qual é a maneira mais elegante de realizar minha tarefa? Tenho a sensação de que posso fazer isso sem repetir o vetor várias veze

Código

#include <vector>
#include <fstream>
#include <iterator>
#include <iostream>
using namespace std;

vector<int> ifstream_lines(ifstream& fs)
{
  vector<int> out;
  int temp;
  while(fs >> temp)
  {
    out.push_back(temp);
  }
  return out;
}

vector<int> MergeSort(vector<int>& lines)
{
  int split = lines.size() / 2;
  int arrayA[split];
  int arrayB[split];
}

int main(void) 
{
  ifstream fs("textfile.txt");
  vector<int> lines;
  lines = ifstream_lines(fs);

  return 0;
}

Obrigado :

questionAnswers(8)

yourAnswerToTheQuestion