每个for循环迭代的回调

时间:2010-05-17 17:20:29

标签: c++

有点天真的问题,但仍然如此。我试图打破一个正在读取2d矩阵的for循环。我想写一个回调函数来消耗每行/每次迭代的行/逐列。关于如何将回调函数与迭代联系起来的任何提示?

bool ReadMatrix(const int** array) {  

  .....  
    int columns;// array col  
    int rows; //array rows  

    for(int col=0; col<columns; ++col) {  
       for(int row=0; row<rows; ++row) {  
           ReadValue(row, col); //arbitrary function... which i would like to tie up with iterations  
      }  
    }  
    ....  

 }  

2 个答案:

答案 0 :(得分:0)

我的第一个考虑是你的回调采用数组,行索引,行跨度,列索引和列跨度。

class functor
{
public:
    void operator()(int data[][],
                    size_t row_idx,
                    size_t row_span,
                    size_t col_idx,
                    size_t col_span);
};

我将迭代器函数作为模板编写,因此它可以轻松地获取仿函数,自由函数或类静态函数:

template <class CB_T>
void iterate(int data[][],
             size_t rows,
             size_t columns,
             CB_T cb);

答案 1 :(得分:0)

for(var y in m){
    rowCallback(m[y]);
    for(var x in m[y]){
        elemCallback(m[y][x]);
    }
}

???