Russian Qt Forum
Октябрь 01, 2024, 22:21 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2 3 4   Вниз
  Печать  
Автор Тема: максимальное количество елементов в двумерном масиве  (Прочитано 27598 раз)
Ubuntu_linux
Гость
« : Апрель 06, 2010, 17:24 »

Есть масиви u[1000][1000] и E[1000][1000] как можно увеличить количестко строк и столбцов  в  10 раз, а то в Qt не хватает памяти?
Записан
niXman
Гость
« Ответ #1 : Апрель 06, 2010, 17:30 »

Qt тут не при чем. вы пытаетесь выделить память на стеке Улыбающийся
для подобных целей есть std::vector<>, std::list<>, QVector<>, QList<>
ну и на худой конец, динамическая память.
Записан
Ubuntu_linux
Гость
« Ответ #2 : Апрель 06, 2010, 17:34 »

как  увеличить  виделения динамической памяти?
Записан
SimpleSunny
Гость
« Ответ #3 : Апрель 06, 2010, 17:45 »

Использовать new.

Код
C++ (Qt)
int **mtrx;
matr = new int* [nrow];
for (int i = 0; i < nrow; ++i)
   mtrx[i] = new int [ncol];

Удалять в обратном порядке.
Записан
niXman
Гость
« Ответ #4 : Апрель 06, 2010, 17:49 »

SimpleSunny, вот расскажите, нафига такой изврат, когда есть контейнеры? Подмигивающий
Записан
Karl-Philipp
Гость
« Ответ #5 : Апрель 06, 2010, 18:17 »

SimpleSunny, вот расскажите, нафига такой изврат, когда есть контейнеры? Подмигивающий
Встречал я где-то в Интернете, что контейнеры (vector, list и т.д.) хорошо справляются с количеством объектов до 100.000 штук (ориентировочно).  Дальше, по идее, скорость обработки объектов будет (может) падать.
Возможно, поэтому Ubuntu_linux хочет решить свой вопрос с помощью массивов.
Записан
alexman
Гость
« Ответ #6 : Апрель 06, 2010, 18:20 »

Еще накладных расходов избегаем!
Записан
Karl-Philipp
Гость
« Ответ #7 : Апрель 06, 2010, 18:25 »

Еще накладных расходов избегаем!
переведите, пожалуйста Подмигивающий
Записан
Amigo_sa
Гость
« Ответ #8 : Апрель 06, 2010, 18:26 »

Использовать new.

Код
C++ (Qt)
int **mtrx;
matr = new int* [nrow];
for (int i = 0; i < nrow; ++i)
   mtrx[i] = new int [ncol];

Удалять в обратном порядке.


Насколько я понял, для динамических двумерных массивов лучше так не выделять память. new - тяжелая операция и удалять потом объекты трудно. Лучше выделить сразу matr = new int* [nrow * ncol] . и потом аккуратно работать с индексами
Записан
alexman
Гость
« Ответ #9 : Апрель 06, 2010, 18:46 »

Еще накладных расходов избегаем!
переведите, пожалуйста Подмигивающий
Была ситуация, когда хранил двумерный массив Qt-ыми средствами. Размер большой! В рез-те требовалось много оперативки! Стал использовать обычное динамическое выделение памяти - размер занятой оперативки уменьшился значительно! Хотя если размеры небольшие конечно лучше использовать стандартные контейнеры Подмигивающий
Записан
zenden
Гость
« Ответ #10 : Апрель 06, 2010, 18:50 »

лучше купить побольше памяти и не париться  Строит глазки копейки стоит ведь
Записан
Karl-Philipp
Гость
« Ответ #11 : Апрель 06, 2010, 19:25 »

лучше купить побольше памяти и не париться  Строит глазки копейки стоит ведь
а что делать, если программа пишется для продажи? Не говорть же покупателям, что нужно докупать оперативу Улыбающийся
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #12 : Апрель 06, 2010, 19:33 »

лучше купить побольше памяти и не париться  Строит глазки копейки стоит ведь

Что делать в случае эмбеддед девайсов?
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Vass
Гость
« Ответ #13 : Апрель 06, 2010, 19:45 »

а что делать, если программа пишется для продажи? Не говорть же покупателям, что нужно докупать оперативу Улыбающийся

Ну не знаю, производители игр и Мелкософт, по-моему, так и делают %)
Записан
Ubuntu_linux
Гость
« Ответ #14 : Апрель 06, 2010, 19:53 »

Использовать new.

Код
C++ (Qt)
int **mtrx;
matr = new int* [nrow];
for (int i = 0; i < nrow; ++i)
   mtrx[i] = new int [ncol];

Удалять в обратном порядке.


А как обращаться к елементам масива ? например u[10][1000]?
Записан
Страниц: [1] 2 3 4   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.253 секунд. Запросов: 23.