2017-11-05 13 views
-2

は、以前私はこのコードでは、2次元配列ベクトルを使用して2D配列を作成する方法は?

vector<vector<int>> array; 
int m=3,n=3; 
array.resize(m); 
for(int i=0;i<m;i++) 
{ 
    array[i].resize(n); 
} 
for(int i=0;i<m;i++) 
{ 
    for(int j=0;i<n;j++) 
    { 
     array[i][j] = i+j; 
    } 
} 

を作成するために動作しますが、私はの値を取得しようとするので、それは、[1] [0]配列を言う、これは動作しないことが判明したと思いました0を返しますが、1にする必要があります。

私は、その理由は1つだけあり、2D配列ではないと言います。

コードが正しくて間違いがある場合は、間違いを教えてください。そうでない場合は、ベクトルを使用して2D配列を作成する方法を提案してください。あなたは

+4

このコードを試してみてください

感謝のために、 'でなければなりません(int型J = 0; jの songyuanyao

+1

あなたはまだ 'ベクトル'を避けるべきです。代わりに単純な 'vector'を使い、インデックス計算を行う何かにラップしてください。 – nwp

+0

http://idownvotedbecau.se/itsnotworking/ – user0042

答えて

1
vector< vector<int> > matrix(m,vector<int>(n)); 

for(int i=0;i<m;i++) 
{ 
    for(int j=0;i<n;j++) 
     matrix[i][j] = i+j; 
} 
+0

これは、opのコードに表示されているよりも最初のサイズの 'std :: vector'の中で' std :: vector'を与えるのがはるかにクリーンな方法ですが、問題? – George

+0

私の問題は私のプログラムがクラッシュしたのではなく、自分のコードがうまくいかないということでした。以前のコードで問題を見つけるためにデバッガを使用するようになりました。皆様おかげさまで、 –

1

ループの内側の

#include <vector> 
#include <iostream> 
#include <algorithm> 
using namespace std; 
int main() { 
vector < vector<int> > array; 
int m=3,n=3; 
array.resize(m); 
for(int i=0;i<m;i++) 
{ 
    array[i].resize(n); 
} 
for(int i=0;i<m;i++) 
{ 
    for(int j=0;j<n;j++) 
    { 
     array[i][j] = i+j; 
    } 
} 

for(int i=0;i<m;i++) 
{ 
    for(int j=0;j<n;j++) 
    { 
     cout<<array[i][j] ; 
    } 
    cout<<endl; 
} 

    return 0; 
} 
+0

あなたのコードにはベクターヘッダファイルがありません。 –

+0

私はそれを変更しました:) –

関連する問題