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

标签 c++

在我的部分代码中,我有

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是整数,缓存是a

vector<vector<vector<vector<int> > > >

最佳答案

唯一可能发生这种情况的情况是,如果其中一个索引超出范围,那么您正在访问 vector 之外的内存。 vector 成员函数 at 的工作方式与下标运算符类似,只是它进行边界检查,用它来检测此错误。

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

关于c++ - 分配给变量的值与直接打印的值不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13548294/

相关文章:

c++ - 改变 QMenu 中子菜单的位置

c++ - 我如何简单地读取控制台输出

c++ - Xcode 5 上的 Cocos2d-x 设置

c++ - 同时持有不同类型的集合

c++ - 如何在C++中制作没有小数位限制的 float

c++ - 如何跨语言在多个应用程序之间建立通信

python - SWIG Python包装,除法运算符重载很奇怪

c++ - Chromium Embedded Framework 绑定(bind)按键

c++ - 自动打印GDB中最后一个表达式的值,如VisualStudio的 "Auto"watch window

c++ - valgrind 显示调试结果,但结果不对