在处理二维数组时,例如你需要经常访问元素的矩阵.执行此操作的直接方法是通过两个嵌套循环:
for( int i=0; i < n; ++i ) { for( int j=0; j < m; ++j ) { // do something with data[i][j] } }
这个代码原则经常在整个代码中反复复制.你怎么解决这个问题变成DRY?我认为解决这个问题的唯一方法是使用带函数指针的访问者函数,对吧?
编辑:为了更具建设性,我们假设您有矩阵类型typedef double ** Matrix;.
对于C,这可以通过这种方式解决:Loop over matrix elements applying variable function
解决方法
@H_404_13@ 第一项工作:考虑将数据重新组织为表示矩阵的结构,或者,如果没有,则使用简单的typedef.我假设你做前者.“//用data [i] [j]做一些事情”可能是一个函数(foo说),它将i,j和指向矩阵结构的指针作为参数.
然后你只需要一个执行循环的函数:该函数将函数指针指向适当的foo和矩阵结构指针.
您的工作就是根据您的要求实施各种形式.
不要为此使用宏:它们使调试变得困难,特别是如果它们引入了硬编码的变量名,如i和j.