Создание массива
Мне необходимо создать очень большой двумерный массив (1000000 х 1000000 элементов), состоящий из целых чисел. Простая программа, в которой написано:
Есть такая штука как разреженная матрица, где неиспользуемые элементы не требуют выделения памяти. Может, тебе подойдет? Какая задача стоИт?
Мне необходимо создать очень большой двумерный массив (1000000 х 1000000 элементов), состоящий из целых чисел.
int **FM;
int x=1000000;
int y=1000000;
FM=new int*[x];
for (int n=0;n<x;n++)
FM[n]=new int[y];
FM[50][50]=25;
ShowMessage(FM[50][50]);
for (int d=0;d<x;d++)
delete[] FM[d];
delete[] FM;
Для этого требуется много памяти.
:)
Non_prog
Мне необходимо создать очень большой двумерный массив (1000000 х 1000000 элементов), состоящий из целых чисел. Простая программа, в которой написано:
:D :D :D
Никак. В ближайшие пару десятков лет и не имея дома суперкомпьютер.
Прежде чем писать код подсчитайте объем памяти нужный для этого массива. По моим выкладкам получается что-то около 4 Тб :-o . Так что бросьте эту бредовую затею.
Хотя если процент заполнения крайне низок можно попробовать идею waterman'a.
Ты правильно подсчитал, но не всё так безнадежно можно дать объявление в интернете: "Подключайтесь к очень большому двумерному (1000000х1000000 элементов) интернет массиву !".
:)
int huge myArray [1000000l][1000000l];
(глобально, ессессено)
не верю, что она выдаст ашибку =)
не верю, что она выдаст ашибку =)
Выдаст когда место на винте кончиться :)
Ну в общем на основе введенных данных массив заполняется определенными значениями. Задача - по ходу работы программы выводить эти значения как можно быстрее, поэтому необходимо держать массив в оперативной памяти.
А поконкретней можно ? просто есть случаи когда не обязательно держать в памяти массив, данные можно генерить на ходу по определенному закону. такой подход применялся в играх (ландшавты,расположение обьектов и т.д. ) когда памяти в компах было не больше 128кб.