分配给变量的值与直接打印的值不同
Value assigned to variable differs from value printed directly
在我的代码的一部分中,我有
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);
相关文章:
- std::cout 在打印变量与函数表达式时的行为不同
- 面临在 if 语句之外打印变量数据的问题 完成使用 Qt 编程
- 如何在咖啡中Forward_gpu期间打印变量
- 如何使用类中的函数从 main 打印变量,帮助理解 OOP c++
- 当我在循环内打印变量时无限输出
- 如何打印变量的第一个输入/值?C
- gdb在选项卡完成的情况下打印变量时冻结
- 打印变量的地址
- 试图在C++中打印变量int会导致它崩溃.为什么?
- 有没有一种方法可以在Netbeans中的断点处打印变量的值
- 以十进制打印变量的地址
- WxWidgets 绘制文本以在屏幕上打印变量
- 尝试打印变量.程序崩溃
- 为什么 cout 不打印变量"C"外部?
- 串行打印变量在特定的时间间隔打印数组的大小,即使数组没有被使用
- 在#define中打印变量名
- 我们可以说cout只打印变量的第一个地址吗
- 不能在c++中打印变量a
- 如何使用内存地址打印变量的值
- 没有宏的c++简单反射:打印变量名及其值