2016-04-02 16 views
-1

Angenommen, ich habe eine folgende 2D-Matrix im folgenden Format. Die erste Zeile zeigt die Dimension an und der Rest die anderen Elemente. In diesem Fall ist es eine 6 * 6 Matrix:Speichern eines 2D-Arrays in einem 2D-Vektor in C++

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 

Normalerweise können wir die Matrix in einem Vektor speichern mit diesem:

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

Aber wenn ich dieses Array im Format nehmen wollen habe ich gezeigt, oben von einer Textdatei in einen 2d Vektor wie der oben genannte, wie werde ich das in C++ tun?

Antwort

1

Dies sollte funktionieren:

#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; 
} 
Verwandte Themen