c++ - 如何在c ++中修复超出范围的向量下标
问题描述
我正在尝试将“coordinateList”向量的元素与“Buttons”向量的元素进行比较,如果四个不同的 if 语句可以通过它们,则在“countList”向量中增加 1。但是,问题是,每当我为无法通过 if 语句的“coordinateList”输入 2 个数字时,它会在部分上得到“向量下标超出范围”;
if ((coordinateList[j][0] >= Buttons[i][0])
&& (coordinateList[j][0] <= Buttons[i][1])
&& (coordinateList[j][1] >= Buttons[i][2])
&& (coordinateList[j][1] <= Buttons[i][3]))
我不知道如何解决它。
#include <iostream>
#include <vector>
using namespace std;
int main() {
int numberOfButtons;
int numberOfClicks;
cin >> numberOfButtons;
cin >> numberOfClicks;
int buttonCoordinate;
vector <vector<int> > Buttons;
for (unsigned int i = 0; i < numberOfButtons; i++) {
vector<int> oneButtonCoordinate;
for (unsigned int j = 0; j < 4; j++) {
cin >> buttonCoordinate;
oneButtonCoordinate.push_back(buttonCoordinate);
}
Buttons.push_back(oneButtonCoordinate);
}
int XYCoordinate;
vector <vector<int> > coordinateList;
vector <int> clickCount;
for (unsigned int i = 0; i < numberOfClicks; i++) {
vector<int> oneClickCoordinate;
for (unsigned int j = 0; j < 2; j++) {
cin >> XYCoordinate;
oneClickCoordinate.push_back(XYCoordinate);
}
coordinateList.push_back(oneClickCoordinate);
}
for (unsigned int i = 0; i < numberOfButtons; i++) {
clickCount.push_back(0);
}
for (unsigned int j = 0; j < numberOfClicks; j++) {
for (unsigned int i = Buttons.size() - 1; i >= 0; i--) {
if ((coordinateList[j][0] >= Buttons[i][0]) && (coordinateList[j][0] <= Buttons[i][1]) && (coordinateList[j][1] >= Buttons[i][2]) && (coordinateList[j][1] <= Buttons[i][3])) {
clickCount.at(i) += 1;
break;
}
}
}
(skip)
return 0;
}
正确输入输出示例
输入
2 5
1 5 1 5
3 8 3 8
1 1
3 3
3 5
8 8
3 10
输出
Button: #1: 1
Button: #2: 3
解决方案
so it is the line
for (unsigned int i = Buttons.size() - 1; i >= 0; i--)
which ends up in an invalid index (0xFFFFFFFF still >= 0!).
Use instead:
for (int i = (int) Buttons.size() - 1; i >= 0; i--)
推荐阅读
- python - 从 Pandas Dataframe 中的滚动时间窗口中识别重复项
- java - 使用方法调用打印出过滤后的二维数组时遇到问题
- node.js - Feathers js - 类型错误:app.get 不是函数
- java - 如何使用 keycloak 保护 angular/spring 应用程序?
- image-processing - 关于相机中渐晕的一些问题
- angular - 嵌套组件上的动画未触发
- r - 我需要在 R 中将奇怪的日期格式从字符转换为日期格式
- git - Git pull 不会在无限 for 循环中影响本地文件?
- jupyter-notebook - 如何从 Jupyter notebook 创建的 Reveal.js 幻灯片中删除过渡?
- android - 当您的 android 应用程序中有 300 多个首选项时,从共享首选项迁移到 Jetpack Proto 数据存储?