¿La mejor manera de dividir un vector en dos matrices más pequeñas?

Lo que estoy tratando de hacer:

Estoy tratando de dividir un vector en dos matrices separadas. El vector int actual contiene un elemento por línea en un archivo de texto. El archivo de texto es una lista de enteros aleatorios.

Cómo planeo hacerlo:

Mi idea actual es crear dos matrices int regulares, luego iterar sobre todo el vector y copiar n / 2 elementos para cada una de las matrices.

Lo que me gustaría saber:

¿Cuál es la forma más elegante de lograr mi tarea? Tengo la sensación de que puedo hacer esto sin iterar sobre el vector varias veces.

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;
}

Gracias :

Respuestas a la pregunta(8)

Su respuesta a la pregunta