C++2D矢量声明和来自调试器的元素访问
C++ 2D vector declaration and element access from debugger
我目前正在尝试创建一个双精度为256*256的维向量。我读了文件,我认为我声明得很好。
int rows1 = 256;
int cols1 = 256;
vector<vector<double>> LBP1(rows1, vector<double>(cols1));
问题是,当我进行调试时,它只有256个大小。
当我在一个循环中访问它们的元素时,比如:
LBP1[i][j]
调试告诉我:"没有运算符"[]"匹配这些操作数"。我已经用向量解决了这个问题_Myfunction适用于一维情况,但在这里我有点难以找到解决方案。
如果有人能解释为什么会发生这种事,我会非常感激。
第一个向量的大小为256,它包含256个其他向量,所有向量的大小都为256。
LDB1[i][j]
的语法正确。很可能您的调试器无法正确处理它。检查它是否在代码中工作,这将得到确认。
您可以尝试在调试器中使用at
方法。
http://www.cplusplus.com/reference/vector/vector/at/
您的声明是正确的。CCD_ 3,因为这是外部向量中的元素数量。调试器可能在显示重载运算符[]时出现问题(这是一个单独的大主题)。
首先,您不是在声明二维向量。你正在声明一个向量的向量,通常在语法上不太受欢迎。
如果你需要在2D结构上执行矩阵代数,你应该真正使用已经可用的矩阵类。如果你只需要一个结构来表示二维布局(例如二维坐标图),那么最好使用单个矢量并以准二维风格访问它,如下所示:
std::vector<int> vec(n_columns * n_rows);
int i = vec[x + y * n_rows];
相关文章:
- 正在VS调试器中监视映射条目
- 访问要输出的矢量迭代器元素
- 为什么我的 VS 代码调试器在我的C++代码周围弹跳?
- 带有 GDB 调试器的 VS 代码内存视图
- 为什么调试器引发"read access violation. this was nullptr"异常?
- VS2017调试器:没有地址,可能是由于编译器优化
- 当前不会命中断点。没有调试器目标代码类型的可执行代码与此文件关联
- 使用 Windows 10 和 MINGW 编译器在 VS Code 上使用 gdb 调试器进行调试时出错
- 如何在可视化代码中生成用于 c++ 开发的调试器?
- 为什么我的程序无法在GDB在线编译器/调试器或Visual Studio C++ 2019中运行
- Popen使Qt调试器崩溃
- 附加调试器并以编程方式获取变量地址 Visual Studio
- 在集成终端上运行vscode lldb调试器时,如何获取程序的输出?
- 宏使枚举调试器感知?
- Eclipse-C++-调试器立即终止
- Visual Studio 2013 C++:STL 容器的元素显示在调试器中
- std::map的大小大于调试器中显示的元素数量
- 如何在调试器的变量弹出消息中显示更多子元素?
- C++2D矢量声明和来自调试器的元素访问
- 一个简单的方法来观察一个矢量元素在调试器