You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++中查找vector内前后相邻元素均为0的元素 解决下标越界问题

错误原因说明
  • 你对范围for循环的用法理解有误:for (int i : sample)语法遍历得到的i是vector存储的元素值,不是元素的下标,你直接把i作为下标访问数组,本身就会产生大量非法下标,这是报错的核心原因
  • 即使修正为下标遍历,首尾元素分别没有前一个、后一个相邻元素,本身不满足判断条件的前提,不需要参与遍历
  • 你写的sample[i - 1] == sample[i + 1] == 0语法不符合C++逻辑判断规则,连续相等判断需要拆分为两个独立判断用逻辑与&&连接
修复方案

直接改用下标遍历,跳过首尾元素即可,修复后的代码如下:

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    vector<int> sample = { 0,3,0 };
    // 从下标1开始遍历,到倒数第二个元素(下标为sample.size()-2)结束
    for (int i = 1; i < sample.size() - 1; i++)
    {
        // 拆分判断条件,确认前后元素都是0
        if (sample[i - 1] == 0 && sample[i + 1] == 0)
        {
            cout << "hello";
        }
    }
    return 0;
}
效果验证

你给出的测试用例{0,3,0}中,只有下标为1的元素3符合要求,运行后会输出hello,不会再出现下标越界报错。

内容的提问来源于stack exchange,提问作者Mo_AminKiaee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 06:36:03