2016-04-02 24 views
-1

以下の形式の2D行列があるとします。最初の行は次元を示し、残りの行は要素を示します。2D配列をC++で2Dベクトルに格納する

6 
1 2 3 4 2 3 
3 3 4 5 2 1 
4 3 3 1 2 3 
5 4 3 6 2 1 
3 2 4 3 4 3 
2 3 4 1 5 6 

通常、私たちは、この使用して、ベクトルに行列を保存することができます:この場合は、6 * 6マトリックスです

typedef std::vector<int32_t> vec_1d; 
typedef std::vector<vec_1d> vec_2d; 
vec_2d array{ 
{ 1, 2, 3, 4, 2, 3 } 
, { 3, 3, 4, 5, 2, 1 } 
, { 4, 3, 3, 1, 2, 3 } 
, { 5, 4, 3, 6, 2, 1 } 
, { 3, 2, 4, 3, 4, 3 } 
, { 2, 3, 4, 1, 5, 6 } 
}; 

をしかし、私は形式でこの配列を取りたい場合は私が示されています上記のようなテキストファイルから2dのベクトルへの上に、私はこれをC++でどのようにしますか?

答えて

1

これは動作するはずです:

#include "fstream" 
#include "vector" 
using namespace std; 

int main() 
{ 
    ifstream fin("file.txt"); 
    int n; 
    fin >> n; 
    vector < vector <int> > matrix (n, vector <int>(n)); 
    // or vec_2d matrix (n, vec_1d(n)); with your typedefs 

    for (auto &i: matrix) 
     for (auto &j: i) 
      fin >> j; 
}