如何在C中实现DRY原则来循环矩阵

前端之家收集整理的这篇文章主要介绍了如何在C中实现DRY原则来循环矩阵前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在处理二维数组时,例如你需要经常访问元素的矩阵.执行此操作的直接方法是通过两个嵌套循环:
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

解决方法

第一项工作:考虑将数据重新组织为表示矩阵的结构,或者,如果没有,则使用简单的typedef.我假设你做前者.

“//用data [i] [j]做一些事情”可能是一个函数(foo说),它将i,j和指向矩阵结构的指针作为参数.

然后你只需要一个执行循环的函数:该函数函数指针指向适当的foo和矩阵结构指针.

您的工作就是根据您的要求实施各种形式.

不要为此使用宏:它们使调试变得困难,特别是如果它们引入了硬编码的变量名,如i和j.

猜你在找的C&C++相关文章