C++ 访问i+;1.

C++ 访问i+;1.,c++,for-loop,C++,For Loop,但是,这并不能解决问题。如何避免无效向量下标错误?向量索引是基于零的,而.size()将返回向量的大小。这意味着您可以访问的最高索引是.size()-1,例如,单个项向量的大小为1,但最大索引为0 for循环的i

但是,这并不能解决问题。如何避免无效向量下标错误?

向量索引是基于零的,而
.size()
将返回向量的大小。这意味着您可以访问的最高索引是
.size()-1
,例如,单个项向量的大小为1,但最大索引为0


for循环的
i
部分告诉编译器只要该条件为真,就运行
i++
,因此为了避免尝试访问向量外部的索引,它需要停止在
i
在原始代码中,无效的向量下标错误可能会在

if (i == location.size())
    break;

它将访问上一次迭代中向量长度以外的值。表示如果向量.at(i)
超出向量边界,则会抛出超出范围的异常,但当向量.at(i)超出边界时,我的编译器(gcc)会抛出不同的异常。因此,编译器可能抛出无效的向量下标错误。我将添加一个特殊情况来处理for循环中的最后一次迭代。

谢谢您的回答。我将Python代码转换成C++代码。你能检查一下原始的python代码吗?@TaeYoon与python无关,它是一种不相关的语言。C++行为定义为C++行为。还有
位置。at(0)
很可能应该是
位置。at(i)
即使我修改了代码,问题仍然会发生。此时会出现一条警告消息,指示line函数中出现算术溢出。是否应使用类型转换?
if (i == location.size())
    break;
locations.at(i+1)