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

C++拆分vector元素时for循环报‘i’ was not declared in this scope错误如何解决

问题代码存在的3处核心错误

  • 循环变量i未声明类型:C++要求局部变量必须先声明类型再使用,你直接在for循环写i=0没有指定int类型,直接触发'i' was not declared in this scope报错
  • 循环终止条件错误:numbers[6]属于越界访问,你的numbers容器一共只有6个元素,下标范围是0~5,正确的循环终止条件应该是判断i小于容器的元素总数numbers.size()
  • 容器方法调用错误:pop_back()的作用是删除容器末尾的元素,不支持传入参数,你要往目标容器存入元素应该使用push_back()方法
  • 冗余判断:非偶数即奇数,不需要额外写else if判断奇偶性,直接用else即可

修正后的可运行代码

#include <iostream>
#include <vector>

int main() {
    std::vector<int> numbers = {2,4,3,6,1,9};
    std::vector<int> evennumbers;
    std::vector<int> oddnumbers;
    // 声明i为int类型,终止条件用size()获取容器长度
    for (int i = 0; i < numbers.size(); i++) {
        if (numbers[i] % 2 == 0) {
            // 存入元素用push_back
            evennumbers.push_back(numbers[i]);
        } else {
            oddnumbers.push_back(numbers[i]);
        }
    }
    // 可选:输出验证结果
    std::cout << "偶数:";
    for (int num : evennumbers) std::cout << num << " ";
    std::cout << "\n奇数:";
    for (int num : oddnumbers) std::cout << num << " ";
    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 10:06:03