c++ 循环通过向量std::out_of_range'

tzcvj98z  于 2023-08-09  发布在  其他
关注(0)|答案(1)|浏览(130)

我只是在leetcode上练习c++:https://leetcode.com/problems/asteroid-collision/description/
我有向量溢出的问题。

terminate called after throwing an instance of 'std::out_of_range'
  what():  vector::_M_range_check: __n (which is 1) >= this->size() (which is 1)

个字符
我知道erase缩小了我的向量的大小,但我看不出out_of_range是如何发生的
编辑:这是我的第一个版本的代码,我知道我可以写得更简单(比如更少的if语句或abs()等)。),但首先我想知道代码失败的原因。

mf98qq94

mf98qq941#

你为向量的原始大小循环,但在循环中你减少了向量的大小,所以当访问超过 * 新 * 减少的大小时,你最终访问越界。
如果vector最初包含10个元素,您将循环10次并访问元素0-9。如果你擦除1个元素,那么唯一有效的索引将是0-8,所以一旦你碰到索引9,你就越界了。

相关问题