La meilleure façon de diviser un vecteur en deux petits tableaux?

Ce que je suis en train de faire:

Je suis en train de séparer un vecteur en deux tableaux distincts. L'actuel int vecteur contient un élément par ligne dans un fichier texte. Le fichier texte est une liste d'entiers aléatoires.

Comment j'envisage de faire:

Mon idée est de créer deux int ensembles, puis itérer sur l'ensemble du vecteur et de la copie n/2 éléments de chacun des tableaux.

Ce que je voudrais savoir:

Quelle est la façon la plus élégante de l'accomplissement de ma tâche? J'ai le sentiment que je peux le faire sans parcourir le vecteur à plusieurs reprises.

Code:

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

Merci 🙂

  • Je vous recommande de quelque chose de la <algorithm> en-tête (en.cppreference.com/w/cpp/algorithm). std::copy ou std::move pourrait être d'intérêt.
  • J'aime la façon dont la question est posée. Vous ne voyez pas bien structuré à ce genre de questions provenant de nouveaux utilisateurs, très souvent.
  • si vous n'avez pas l'intention de modifier la taille des 2 tables, vous pouvez jeter un oeil à array_view
InformationsquelleAutor mightcouldb1 | 2012-03-21