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
相关产品推荐
相关产品推荐

