c++ - C++ 调试断言失败 - Visual Studio 上的向量下标超出范围
问题描述
我的代码
while (board[x + 1][y] == '#' && x + 1 < m) x++;
这部分导致Visual Studio出现错误。但是,此代码正在网站上进行编码测试。
矢量板尺寸为 4x5。
在 x=1、y=3 时发生错误。
这是董事会状态。
[0] # # # A A
[1] # # # A A
[2] # # # # A
[3] # # # A A
当条件为真时发生错误。
什么是问题?
解决方案
正如我的评论:
while (x + 1 < m && board[x + 1][y] == '#' ) x++;
如果第一个逻辑表达式为假,那么(因为我们对它们进行 AND)第二个逻辑表达式不会被评估并且数组不会被读取到边界之外。
它与 Visual Studio 没有任何共同之处。
推荐阅读
- android - 将 getLoaderManager().initLoader 替换为 MutableLivedata
- boto3 - Boto3 和 AWS CLI 不兼容问题
- database - 在 postgres 中的表之间创建外键关系
- google-apps-script - 将值复制并粘贴到 Google 表格中的空白单元格或非空白单元格中时,如何使 onEdit() 事件对象 e 工作?
- javascript - 将两行合并为一行时自动删除空格
- java - 如何配置多个 Spring bean 并选择使用哪一个?可能吗?
- java - 如何保护我的 Apache Camel REST API?
- objective-c - 从objective-c++调用swift函数
- python - 如何创建 x 数量的列表/集合,以便以后添加?
- kubernetes - 如何允许外部进程连接 k8s 的 pod?