Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Создание массива

507
08 марта 2003 года
PASS
45 / / 20.09.2000
Мне необходимо создать очень большой двумерный массив (1000000 х 1000000 элементов), состоящий из целых чисел. Простая программа, в которой написано:
 
Код:
int myArray [1000000][1000000];
вылетает с ошибкой Stack overflow (что и следовало ожидать). Как же сделать такой большой массив?
463
08 марта 2003 года
waterman
178 / / 17.01.2003
Цитата:
Originally posted by PASS
Мне необходимо создать очень большой двумерный массив (1000000 х 1000000 элементов), состоящий из целых чисел. Простая программа, в которой написано:
 
Код:
int myArray [1000000][1000000];
вылетает с ошибкой Stack overflow (что и следовало ожидать). Как же сделать такой большой массив?



Есть такая штука как разреженная матрица, где неиспользуемые элементы не требуют выделения памяти. Может, тебе подойдет? Какая задача стоИт?

507
09 марта 2003 года
PASS
45 / / 20.09.2000
Ну в общем на основе введенных данных массив заполняется определенными значениями. Задача - по ходу работы программы выводить эти значения как можно быстрее, поэтому необходимо держать массив в оперативной памяти.
371
10 марта 2003 года
Non_prog
193 / / 20.03.2000
Цитата:
Originally posted by PASS
Мне необходимо создать очень большой двумерный массив (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;

Для этого требуется много памяти.
:)

2.0K
10 марта 2003 года
segev
67 / / 19.01.2003
PASS
Non_prog
Цитата:

Мне необходимо создать очень большой двумерный массив (1000000 х 1000000 элементов), состоящий из целых чисел. Простая программа, в которой написано:
 
Код:
int myArray [1000000][1000000];
вылетает с ошибкой Stack overflow (что и следовало ожидать). Как же сделать такой большой массив?


:D :D :D
Никак. В ближайшие пару десятков лет и не имея дома суперкомпьютер.
Прежде чем писать код подсчитайте объем памяти нужный для этого массива. По моим выкладкам получается что-то около 4 Тб :-o . Так что бросьте эту бредовую затею.
Хотя если процент заполнения крайне низок можно попробовать идею waterman'a.

371
10 марта 2003 года
Non_prog
193 / / 20.03.2000
Цитата:
segev


Ты правильно подсчитал, но не всё так безнадежно можно дать объявление в интернете: "Подключайтесь к очень большому двумерному (1000000х1000000 элементов) интернет массиву !".
:)

2.2K
10 марта 2003 года
bmw_mishuta
18 / / 10.03.2003
Хммм. А почему просто не написать:

int huge myArray [1000000l][1000000l];
(глобально, ессессено)

не верю, что она выдаст ашибку =)
469
10 марта 2003 года
Sli
71 / / 20.01.2000
Цитата:
Originally posted by bmw_mishuta

не верю, что она выдаст ашибку =)



Выдаст когда место на винте кончиться :)

2.2K
11 марта 2003 года
bmw_mishuta
18 / / 10.03.2003
эээ.... Я конечно понял, что это шутка =) Но вот причем тут винт? Скорее оперативка... dos же не делает swap-файлов =)
469
11 марта 2003 года
Sli
71 / / 20.01.2000
Цитата:
Originally posted by PASS
Ну в общем на основе введенных данных массив заполняется определенными значениями. Задача - по ходу работы программы выводить эти значения как можно быстрее, поэтому необходимо держать массив в оперативной памяти.



А поконкретней можно ? просто есть случаи когда не обязательно держать в памяти массив, данные можно генерить на ходу по определенному закону. такой подход применялся в играх (ландшавты,расположение обьектов и т.д. ) когда памяти в компах было не больше 128кб.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог