C++2D矢量声明和来自调试器的元素访问

C++ 2D vector declaration and element access from debugger

本文关键字:调试器 元素 访问 声明 C++2D      更新时间:2023-10-16

我目前正在尝试创建一个双精度为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];