-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型')何をしたいおそらく
イテレータは奇数です。配列全体にconst参照を渡すだけです。 – Peter
2d行列のものについては、「ジグザグ配列」(ベクトル<ベクトル< T >>)を使用しないでください。既存の行列ライブラリを使用するか、連続したバッファに独自のインデックスを作成します。 – Peter