2016-10-05 3 views
-2

私の関数に2次元のベクトルを渡す必要があります。私はイテレータを配列の先頭に渡すことでそれをしようとしました。しかし、エラーが発生しました。C++は機能する2次元ベクトルを渡します

using namespace std; 

displayArrays(vector< vector<int> >::iterator map_b, vector<int>::iterator row_b, int n, int o){ 
    int i, j; 

    for(i = 1; i <= n; i++) 
    { 
     for(j = 1; j <= n; j++) 
     { 
      cout << *map_b + 1;//error is here 
     } 
     cout << endl; 
    } 

    cout << endl; 
    for(i = 1; i < o; i++) 
    { 
     cout << *row_b++ << ' '; 
    } 
} 

int main(){ 
    int n, o; 

    cin >> n; 

    vector< vector<int> > map(n, vector<int>(n)); 
    //filling up array in loop 

    o = n * n; 
    vector<int> row(n*n); 

    vector< vector<int> >::iterator map_b = map.begin(); 
    vector<int>::iterator row_b = row.begin(); 
    displayArrays(map_b, row_b, n, o); 
} 

[エラー] '演算子+' の不一致(オペランドの型がある 'のstd ::ベクトル' と 'int型')何をしたいおそらく

+1

イテレータは奇数です。配列全体にconst参照を渡すだけです。 – Peter

+0

2d行列のものについては、「ジグザグ配列」(ベクトル<ベクトル< T >>)を使用しないでください。既存の行列ライブラリを使用するか、連続したバッファに独自のインデックスを作成します。 – Peter

答えて

0

はこれです:ANを渡す

for(i = 1; i <= n; i++) 
{ 
    for(j = 1; j <= n; j++) 
    { 
     cout << (*map_b)[j]; 
    } 
    cout << endl; 
    map_b++; 
} 
+0

ありがとうございます。それは実際に動作します。 –

関連する問題