Как push_back двунаправленный массив? - PullRequest
0 голосов
/ 08 ноября 2018
#include <iostream>
#include <vector>
#include <utility>

using namespace std;

int main() {
int A[6][6];

for (int i = 0; i < 6; i++){
    for(int j = 0; j <6; j++){
        A[i][j] = 0;
    }
}

A[0][1] = 1;
A[0][3] = 1;
A[1][2] = 1;
A[1][4] = 1;
A[2][4] = 1;
A[3][1] = 1;
A[4][3] = 1;
A[4][5] = 1;
A[5][2] = 1;

vector< vector< int > >;
A[0].push_back(1);
}

Я пытаюсь сделать матрицу смежности из графа. Мой профессор дал мне этот код, но в нем слишком много ошибок, и я никогда не работал с vector <vector < int > >. Ошибки, которые дает мне компилятор, следующие:

26  2 [Error] declaration does not declare anything [-fpermissive]
27  7 [Error] request for member 'push_back' in 'A[0]', which is of non-class type 'int [6]'

1 Ответ

0 голосов
/ 09 ноября 2018

Вы не можете использовать push_back() для массива (A).Вам нужно создать вектор (B) для использования push_back():

vector < vector < int > > B (6);

for (int i = 0; i < 6; i++){
    for(int j = 0; j <6; j++){
        B[i].push_back(A[i][j]);
    }
}

Для печати B:

for (int i = 0; i < 6; i++){
    for(int j = 0; j <6; j++){
        std::cout << B[i][j] << ' ';
    }
    std::cout << std::endl;
}

Выходные данные:

0 1 0 1 0 0 
0 0 1 0 1 0 
0 0 0 0 1 0 
0 1 0 0 0 0 
0 0 0 1 0 1 
0 0 1 0 0 0 
...