C++嵌套for循环索引异常:无法访问目标元素问题排查
问题分析与修正
问题根源
你的循环条件错误,导致目标元素无法被正确遍历:
- 当
M=1(对应元素5所在的第二行)时,内层循环条件k < M - 1等价于k < 0,循环直接跳过,完全没访问该行元素; - 后续
M=2和M=3时,内层循环的终止条件也限制了遍历次数,导致漏掉10、15这两个元素。
修正方案
将内层循环的条件从k < M - 1改为k < M(或等价的k <= M - 1),这样就能按期望遍历到所有目标元素:
#include <iostream> #include <vector> int main() { std::vector<std::vector<int>> matrix_val = { {1,2,3,4,50}, {5,6,7,8,90}, {9,10,11,12,130}, {13,14,15,16,300} }; for (int M = 1; M < 4; M++) { for (int k = 0; k < M; k++) { // 修改循环条件 std::cout << " Matix_val is " << matrix_val[M][k] << " Value of M " << M << " Value of k " << k << std::endl; } } }
修正后输出
运行修正后的代码,会依次输出:
Matix_val is 5 Value of M 1 Value of k 0 Matix_val is 9 Value of M 2 Value of k 0 Matix_val is 10 Value of M 2 Value of k 1 Matix_val is 13 Value of M 3 Value of k 0 Matix_val is 14 Value of M 3 Value of k 1 Matix_val is 15 Value of M 3 Value of k 2
完全符合你期望访问的元素集合。
内容的提问来源于stack exchange,提问作者sarika
相关产品推荐
相关产品推荐

