2010-05-17 91 views
0

有點天真的問題,但仍然。我正試圖分解一個正在讀取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 
     } 
    } 
    .... 

} 
+0

答案在很大程度上取決於你如何存儲矩陣(或者更準確的說 - 存儲是否與行和列都是對稱的)。你使用什麼數據結構? – bobah 2010-05-17 17:26:37

+0

int數組[] [] ..和數據可以稀疏 – SWKK 2010-05-17 17:28:24

+0

請顯示示例/部分代碼。摘要中回答編碼問題是不可能的。 – abelenky 2010-05-17 17:32:25

回答

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); 
0
for(var y in m){ 
    rowCallback(m[y]); 
    for(var x in m[y]){ 
     elemCallback(m[y][x]); 
    } 
} 

???