在我的部分代码中,我有
a = cache[k1][k2][k3][k4];
cout << "DEBUG: " << a << " " << cache[k1][k2][k3][k4] << endl;
我的cout有以下输出:
DEBUG: 38 38
DEBUG: 3 3
DEBUG: 37 37
DEBUG: 4 35 <- the problem
我不明白世界上到底发生了什么。
a,k1,k2,k3,k4是整数,缓存是
vector<vector<vector<vector<int> > > >
答案 0 :(得分:3)
唯一可能发生的方法是,如果其中一个索引超出范围,那么你正在访问向量之外的内存。向量成员函数at
的工作方式与下标操作符的作用相同,只是它会进行边界检查,使用它来检测此错误。
a = cache.at(k1).at(k2).at(k3).at(k4);