2017-10-07 2 views
0

Ich habe ein sehr dummes Problem, das mich verrückt macht.C++ Vektor der Vektoren. Array in 90 Grad gedreht werden

Eingang:

0 3 0 
0 3 0 
0 3 0 

Code:

vector <vector <int>> lab; 
int W; // number of columns. 
int H; // number of rows. 
cin >> W >> H; cin.ignore(); 
for (int i = 0; i < H; i++) { 
    string LINE; 
    getline(cin, LINE); 
    vector <int> row; 
    for (int j=0;j<LINE.length();j++){ 
     if (LINE[j]!=' '){ 
      row.push_back(LINE[j]-'0'); 
     } 
    } 
    lab.push_back(row); 
} 

Aber was ich bekommen ist:

0 0 0 
3 3 3 
0 0 0 

Kann mir jemand erklären, warum es heapens?

+0

Zeigen Sie Ihre Druckcode. – konserw

Antwort

0

Sie sollten Ihre formatierten Eingabeoptionen verwenden, und im Falle von festen Eingaben glauben Sie ihnen einfach.

typedef int Matrix_Element; 
typedef std::vector <Matrix_Element> Matrix_Row; 
typedef std::vector <Matrix_Row> Matrix; 

Matrix m; 
unsigned rows, cols; 

std::cin >> rows >> cols; 
for (unsigned r = 0; r < rows; r++) 
{ 
    MatrixRow row; 
    for (unsigned c = 0; c < cols; c++) 
    { 
    MatrixNumber n; 
    std::cin >> n; 
    row.emplace_back(n); 
    } 
    m.emplace_back(row); 
} 

Wenn Sie Ihre Matrix drucken, verwenden Sie auch Zeile → Spaltenreihenfolge:

for (auto row : m) 
{ 
    for (auto n : row) 
    std::cout << n << " "; 
    std::cout << "\n"; 
} 
Verwandte Themen