2010-05-17 6 views
0

조금은 순진한 질문이지만 그럼에도 불구하고. 나는 2 차원 행렬이 읽히는 for 루프를 깨기 위해 노력하고있다. row/wise 청크를 행/열 반복마다 소비하는 콜백 함수를 작성하고 싶습니다. 반복과 콜백 함수를 묶는 방법에 어떤 힌트? 콜백 배열, 행 인덱스, 행 간격 및 열 인덱스와 열 범위를 적용하려면각 루프 반복을위한 콜백

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

+0

int 배열 [] [] .. 데이터가 희박 할 수 있습니다 – SWKK

+0

샘플/부분 코드를 표시하십시오. 초록에서 코딩 질문에 대답하는 것은 불가능합니다. – abelenky

답변

0

내 첫 걸릴 것입니다.

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

나는 쉽게 펑, 무료 함수 나 클래스의 정적 기능을 할 수 있도록 템플릿으로 iterator 함수를 써서 :

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]); 
    } 
} 

???

관련 문제