我想,我下面的代码是正确的。我想访问5,然后9,10,13,14和15,但我真的不知道为什么它完全缺少5,M的索引是从2开始的。
#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 - 1; k++) {
std::cout << " Matix_val is " << matrix_val[M][k]
<< " Value of M " << M
<< " Value of k " << k
<< std::endl;
}
}
3条答案
按热度按时间lx0bsm1f1#
你的内部循环
如果
M = 1
,则不会运行,因为条件k < M - 1
对于k = 0
不为真。生成以下输出:
tzdcorbm2#
你的内部循环差了一个。只要改变:
致:
kpbpu0083#
索引容器而不引起问题的正确方法是从容器本身获取循环的范围:
但是这种老派的
for
循环很容易由于错误的索引、错误的条件而成为bug的来源......更好的方法是现代的基于范围的for
循环: