動的なintの2D配列が必要です。これは、標準の行列を表します。サイズと要素は、実行時にファイルから読み込まれます。
他のスタックポストから指示を受けて、次のようにアレイをセットアップしました。
void buildArray(ifstream &file, int** 2dArray);
void buildQueue(Queue<int> &Q, int** 2dArray);
int main()
{
int** 2dArray;
Queue<int> Q;
//...
// open file
//...
buildMatrix(file, 2dArray)
buildQueue(Q, 2dArray)
}
void buildArray(ifstream &file, int** 2dArray)
{
int size, element;
while (file.good()) {
file >> size;
2dArray = new int*[size];
for (int i = 0; i < size; i++)
2dArray[i] = new int[size];
// now I should be able to use 2dArray[r][c]
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
file >> element;
2dArray[i][j] = element;
}
}
}
次に、各位置[r] [c]に格納されているintを読み取り、キューを作成する必要があります。私の問題はポインタの逆参照だと思います...しかし、よくわかりません。
void buildQueue(Queue<int> &Q, int** 2dArray)
{
int row, column, element;
// size is passed in as well, size is our rows or columns size here
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
row = i;
column = j;
element = 2dArray[i][j]; // getting seg fault here!
Q.push_back(row, column, element);
}
}
}
ベクトルを使用できることがわかっていることを付け加えておきます。私はここで、ポインターを使用して2D配列を責任を持って構築、使用、および割り当て解除することに挑戦しています。