Программа не работает с огромным входным файлом, отлично работает с меньшими входными файлами - PullRequest
0 голосов
/ 08 мая 2020
int main(int argc, char **argv)
{


    ifstream inFile;
    inFile.open("C:\\Users\\Sean\\Desktop\\test.txt", ios::in);

    string line;
    getline(inFile, line);
    std::istringstream lstream(line);
    int n,m;
    stringstream ss(line);
    ss >> n >> m;


    cout << "n=" << n << " m= " << m << endl;


    vector<int> adj[n];



    //cout << "got here" << endl;


    int j = 0;
    int i = 0;
    int largest = 0;
    int total = 0;





    while (getline(inFile, line))
    {



    std::istringstream lstream(line);
    //cout << line << endl;
    int val;

    while (lstream>> val)
    {


    addEdge(adj, i, val);
    j++;
    total++;

    }

    if(j>largest){ largest = j;}
    j = 0;
    i++;

    }

    cout << "Largest =" << largest << endl;
    cout << "Average =" << (float)total/n << endl;

Итак, эта программа считывает графики из Open Street Map. n и m - первые два целых числа в файле, для числа вершин и числа ребер.

Как и в заголовке, программа отлично работает для небольших файлов "воспроизведения", но закрывается, кажется, при попытке объявить вектор целых чисел в этом случае размером 463514.

Любая помощь приветствуется. Здесь бит потерян.

Это то, что было до addEdge:

void addEdge(vector<int> adj[], int u, int v)
{
    adj[u].push_back(v);

};
...