Другие способы создания динамического двумерного массива? - PullRequest
0 голосов
/ 19 декабря 2010

Редактировать:

Я полностью пересмотрел свой вопрос, поскольку у меня есть лучшее представление о том, что я хочу сделать.

#include <iostream>
#include <cstdlib>
using namespace std; 

int main(){
    const int max_rows = 10; 
    const int max_cols = 10; 

    int *test = new int[max_rows * max_cols]; 

    for(int i = 0; i < 100; i++){
        test[i] = 1 + (rand() % 100);  
    }

    for(int i = 0; i < 100; i++){
        cout << "#" << i << " " << test[i] << endl; 
    }

    int *b = &test[0]; 

    cout << *b << endl; 

    int *x = b + (i * sizeof(int) * max_cols) + (sizeof(int) * j); 

    cout << *x << endl; 

    return 0; 

}

test - это мой двумерный массив.

* x должен содержать адрес test[i][j] (предположим, что в моем коде есть cin >> i и cin >> j).

где i - строка, а j - столбец, который я хочу.

Но, похоже, он не дает мне правильный адрес. Если я не глуп и не читаю это неправильно.

Это способ, которым мне сказали решить проблему.

1 Ответ

1 голос
/ 19 декабря 2010

Конечно, есть простой способ, вам нужно выделить одномерный массив, но использовать его как 2-мерный:

const int row = 5;
const int col = 7;
int *twoD  = new int[row * col];
std::cout << twoD [4*row + 3]; //sample to access [3][4]
return 0;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...