分配给变量的值与直接打印的值不同

Value assigned to variable differs from value printed directly

本文关键字:打印 变量 分配      更新时间:2023-10-16

在我的代码的一部分中,我有

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> > > >

发生这种情况的唯一方法是,如果其中一个索引超出边界,因此您正在访问向量之外的内存。向量成员函数的工作方式at就像下标运算符一样,只是它执行边界检查,使用它来检测此错误。

a = cache.at(k1).at(k2).at(k3).at(k4);