Как реализовать объявление двумерного массива?

Как можно объявить двумерный массив, не зная при этом сразу его размеров? Т.е, например -
int array[][];
int main()
{ array = {{1,2,3,4},{1,2,3,4}}; }

Ну или как объявить глобальную переменную с двумерным массивом в main?
  • Вопрос задан
  • 5025 просмотров
Решения вопроса 1
morozovdenis
@morozovdenis
указатели:

int n, m;
int **a;

//read n
//read m

a = (int **)malloc(sizeof(int *) * n);
for (int i = 0; i < m; i++)
{
	a[i] = (int *)malloc(sizeof(int) * m);
}

for (int i = 0; i < n; i++)
{
	for (int j = 0; j < m; j++)
	{
		a[i][j] = 1;
	}
}


std::vector

std::vector< std::vector<int> > a;

int n, m;

//read n
//read m

for (int i = 0; i < n; i++)
{
	std::vector<int> v(m);
	for (int j = 0; j < m; j++)
	{
		v[j] = (i + j);
	}
	a.push_back(v);
}

std::cout << a[3][3] << std::endl;
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
GavriKos
@GavriKos
Не зная размера заранее - никак. Используйте динамику (указатели), или контейнеры которые под вашу задачу подойдут.
Ответ написан
Комментировать
AxisPod
@AxisPod
В C++11 std::array, в более ранних контейнеры std::list, std::vector, std::deque.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы