【发布时间】:2015-05-06 21:18:31
【问题描述】:
我只是想将文件中的数据读入向量。如图所示,我试图从中读取的文件包含第一个数字 (n),它是节点数。在那之后,我读了n个重量。最后,我从邻接矩阵中得到了连接。当我编译我的代码时它停止工作。
int main()
{
ifstream inFile;
string tline;
inFile.open("Problem.dat_50_50_0");
if(!inFile)
cout << "OPSS" << endl;
inFile >> tline;
inFile >> n;
for(int i = 0; i < 2 * (n + 1); i++)
inFile >> tline;
vector<vector<int> > matrix(n, vector<int>(n));
vector<list<int> > adj(n);
vector<int> weight(n);
vector<int> degree(n);
vector<string> color(n, white);
for(int i = 0; i < n; i++)
{
inFile >> weight[i];
weight.push_back(weight[i]);
}
inFile >> tline;
for(int i = 0; i < n; i++)
for(int j = 0; j < n; j++)
{
inFile >> matrix[i][j];
if(i == j)
matrix[i][j] = 0;
if(matrix[i][j] == 1)
adj[i].push_back(j);
}
}
我正在尝试打开文件读取第一行,将此数字放入n,然后将push_back 放入一个向量中,第一行之后的nth 数字(表示重量如图所示在图片里)。读取权重后,我们去矩阵获取邻居。如果matrix[i][j] == 1,我们将j的值放入邻接向量中。
比如根据图片,adj向量会是这样的:
0 -> 1, 2
1 -> 0, 2, 3
2 -> 0, 1
3 -> 1
【问题讨论】:
-
图片不可见(我认为您需要更多的声誉才能在此处附加它),并且您得到的错误不清楚:它至少可以编译吗?然后你有一个运行时错误?您是否尝试过一些基本的调试来了解它在哪里崩溃?