繁体   English   中英

如何从某个位置开始迭代2d数组?

[英]How to iterate through 2d array starting from some position?

我必须在整个矩阵的随机位置X上移动该块:

在每个新位置,我将其与该位置的值进行比较(为简单起见,矩阵中唯一的部分是X)。 如果X从0开始,这样做很容易,但是就我而言,X片段可以从矩阵中的任何位置开始,现在我首先从这个循环开始:

for(int i = row_x;i<rows;i++)
    for(int j = col_x;j<cols;j++)
        //do something

但这只会使我访问某些领域: 人造样品

我需要访问此图中突出显示的所有字段: 必填

那么最简单的解决方法是什么?

您应该检查它是否是外循环的第一次迭代:

for(int i = row_x; i < rows; i++)
  for(int j = (i == row_x ? col_x : 0); j < cols; j++)
    //do something

一种解决方案是将2D数组结构更改为1D数组并以1D工作(而不是通过算法),然后应用以下方法:

init = rows*i+j;

for(int l = init; l<size;i++){
    //do things
}

不要启动内循环(循环从col_x列迭代,但是从第0指数(第一列),这将涵盖中给出的领域需要

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM