Bool Vector 2D数组在IF条件下使用

Bool vector 2D array using in If condition

本文关键字:条件下 IF Vector 2D 数组 Bool      更新时间:2023-10-16

我正在尝试检查bool vector 2D数组中的元素是否为false。初始化的2D布尔数组:

vector<vector<bool>> *visited;
visited[row][col];
memset(visited, false, sizeof visited);
if (!visited[row][col]) //error: no operator "!" matches these operands

有人有任何建议吗?

您没有创建2D布尔数组。

您甚至没有创建2D Bool Vector。

您为这样的东西创建了指针,使它不法下,然后尝试以几种不同的方式使用它(包括通过访问无效元素对其进行尺寸)。

不要那样做。

只需创建您的向量:

std::vector<std::vector<bool>> visited;

&hellip;然后以普通方式使用它(包括用C的memset打磨它们!)。

您可以这样大小:

std::vector<std::vector<bool>> visited(col, std::vector<bool>(row));

(yuck!)

,然后您在末端尝试访问的访问是局外的,因为索引是基于0的。

我会在一般情况下对2D向量的谨慎(它们具有可怕的内存布局)&mdash;如果您的数据是矩形,则更喜欢1D向量;您随时可以在1D"地址空间"的顶部映射2D索引。

@tran huynh

vector<vector<bool>> visited(rows, vector<bool>(cols));

默认情况下,将所有元素初始化为false