读一个2016行的文件到vector里面,一直提示vector out of range。
我试着把vector大小改的很大还是有这个问题,所以不是一开始分配的大小不够,还有我测试过读文件的方法也是没有问题的。请问是哪里不对呢?
vector<vector<float>>contact(68, vector<float>(68, 0));
for (int k = 1;k <= 2016;k++)
{
int row, column;
infile >> row >> column;
infile.get();
infile.get();
infile.get();
infile.get();
infile >> contact[row - 1][column - 1];
contact[column-1][row-1]= contact[row-1][column-1];
infile.get();
}
vector<vector<float>>contact(68, vector<float>(68, 0));
你这个才68
要下标到2016,起码需要2017
也可以在循环里调用 contact.push_back(你要放入的值),一共需要2017次,因为你下标从1开始的
如果固定要做68*68次处理,可以根据row和column进行两重for循环,内层循环每次读取contact的对应值:
for (int i = 0; i < 68; i++) {
for (int j = 0; j < 68; j++) {
//contact读取并赋值
......
}
}