c++ vector out of the range

读一个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读取并赋值
                ......
      }
}