C++ 如何在c++;

C++ 如何在c++;,c++,vector,subscript,C++,Vector,Subscript,我试图比较“coordinateList”向量的元素和“Buttons”向量的元素,如果四个不同的if语句可以传递它们,那么在“countList”向量中增加1。但是,问题是,每当我为“coordinateList”输入两个数字时,如果不能传递if语句,它就会在该部分上得到“向量下标超出范围” if ((coordinateList[j][0] >= Buttons[i][0]) && (coordinateList[j][0] <= Buttons[i][

我试图比较“coordinateList”向量的元素和“Buttons”向量的元素,如果四个不同的if语句可以传递它们,那么在“countList”向量中增加1。但是,问题是,每当我为“coordinateList”输入两个数字时,如果不能传递if语句,它就会在该部分上得到“向量下标超出范围”

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]))
输出

按钮:#1:1
按钮:#2:3
所以这是一条线

for (unsigned int i = Buttons.size() - 1; i >= 0; i--)
这将导致索引无效(0xFFFFFFFF仍然>=0!)

改用:

for (int i = (int) Buttons.size() - 1; i >= 0; i--)

您是否尝试使用调试器单步执行代码,以查看此异常的确切来源,以及哪个索引无效?
for(unsigned int i=Buttons.size()-1;i>=0;i--)
。小心使用递减迭代器。这个循环永远不会结束,因为无符号整数总是
=0
。首先,应该避免C样式转换。然后,当您从
unsigned int
强制转换为
int
时,应该检查值是否溢出。那很危险。
for (int i = (int) Buttons.size() - 1; i >= 0; i--)