【发布时间】:2016-04-06 11:24:23
【问题描述】:
这应该是一件简单的事情,我应该知道这一点,但我一无所知。
struct Coords {
unsigned row;
unsigned col;
};
Coords indexTable[256];
for ( unsigned row = 0; row < 16; ++row ) {
for ( unsigned col = 0; col < 16; ++col ) {
unsigned currIndex = ?
indexTable[currIndex].row = something;
indexTable[currIndex].col = something;
}
}
当前指数的计算方式是什么? currIndex 与在单个 for 循环中遍历 [0,255] 相同。
【问题讨论】:
-
row * 16 + col,如果您有NCOLS列,则为row * NCOLS + col。 -
例如,计算当前行开始的偏移量。为该行中的列添加偏移量。但这只是两种主要可能性之一,而且还有无数种不太自然的可能性。要获得正确的答案,您需要定义您希望
currIndex成为什么。 -
如果你搜索并发现相反的情况,你不认为你在做相反的事情吗?如果不是,请清楚说明您的问题。
-
当您扫描数组时列索引变化最快时,Holt 的评论(以及我之前的评论)显示了如何计算
indexTable。 -
你在两个for循环中都增加
col,unsigned row = 0; row < 16; ++col应该是unsigned row = 0; row < 16; ++row