微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在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.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐