程序无法处理巨大的输入文件,非常适合较小的输入文件

时间:2020-05-08 08:02:59

标签: c++ openstreetmap adjacency-list

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是文件中的前两个整数,表示顶点的数量和边的数量。

如标题中所示,该程序可完美地处理较小的“播放”文件,但似乎在尝试声明一个int向量为463514大小的int向量时就关闭了。

任何帮助表示赞赏。有点丢在这里。

这是addEdge的主要作用:

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

};

0 个答案:

没有答案
相关问题