Форум программистов, компьютерный форум CyberForum.ru

Двумерные динамические массивы-матрицы (выделение памяти) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Задачник по С++ http://www.cyberforum.ru/cpp-beginners/thread918784.html
Выложите ссылку Задачника по С++, желательно рабочею... Гуглить не хочу, скорость маленькая. Работаю на Dev-C++ версия 4.9.9.2. И еще вопрос: Если прототип Dev'а более новых версий?
C++ Манипуляторы. От С к С++ fprintf(f1, “%-7.3е”, x) Какая эквивалентная запись этой на С++? http://www.cyberforum.ru/cpp-beginners/thread918779.html
изучение с++ C++
Ребят, решил самостоятельно выучить с++, в следующем году вроде бы начнем учить, но я думаю мы все понимаем, что в техникуме не научат того, чего хотелось бы, только самообучение даст результат. Теперь вопрос/просьба посоветуйте книгу, где больше практики и меньше теории ( по существу ) и если кто знает Хорошие курсы в Харькове, тоже не стесняйтесь - пишите ) ( шаг и прочую ересть просьба не...
шаблон функции в нешаблонном классе C++
Возможно ли сделать не шаблонный класс, у которого одна или несколько функций-членов будут шаблонными?
C++ Рендер без цикла http://www.cyberforum.ru/cpp-beginners/thread918747.html
Доброго времени суток. Нужно сделать функцию обновления для простого консольного приложения которое будет работать в фоне, но без цикла. Потому-что с циклом слишком большая нагрузка ЦП. Например как у openGl, там функция рендера такая, что на ЦП не действует. Использовать его не могу, потому-что нужно обязательно делать окно openGL.
C++ Открытие программ свернутых в трей Доброго времени суток. Как можно средствами консоли (если в консоли нельзя, то подскажите что-то другое) открывать программы свернутые в трей. Как у нижней панельки винды. Хочется отключить explorer, но чтоб не терять функционала нижней панельки. подробнее

Показать сообщение отдельно
Gorillych
14 / 14 / 1
Регистрация: 04.07.2013
Сообщений: 76
06.07.2013, 17:16     Двумерные динамические массивы-матрицы (выделение памяти)
Цитата Сообщение от VictoryYV Посмотреть сообщение
Помогите пожалуйста,разобраться. В динамической памяти сначала выделяется память для указателей на соответствующие двумерные массивы(строки матрицы).после этого выделяется память для каждой стороки. Как сделать,чтобы память сначала выделялась на указатели столбцов,а затем на столбцы,чтобы я могла обращаться не к строкам,а потом столбцам- а[i][j],где ¡-строка,а j-столбец ,а вот так обращаться а[¡]-¡-тый столбец.заранее спасибо
В С++ динамический двумерный массив - ВСЕГДА массив указателей на строки данных. Выделять память под столбцы явно нельзя. Поэтому старайтесь избегать конструкций типа Mas[m][n] или **Mas, если Mas - массив простых типов char, int, float и т.д. Наиболее эффективный по скорости доступа к памяти способ работы с массивами - выделение памяти одним куском:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
unsigned int  NumRows = 5;//Количество строк двумерного массива
unsigned int  NumCols = 5;//Количество столбцов двумерного массива
unsigned int 2dArrayLength = NumRows*NumCols;//длина куска памяти двумерного массива
float *2dArray = new float[2dArrayLength]();//Выделение памяти под двумерный массив одним куском и инициализация его элементов нулями
unsigned int RowIdx = 3;//Индекс элемента строки двумерного массива
unsigned int ColumnIdx = 3;//Индекс элемента столбца двумерного массива
float ElemFrom2dArray = 2dArray[ColumnIdx+RowIdx*NumCols];//Доступ к элементу двумерного массива
delete[] 2dArray;// Освобождение памяти
 
unsigned int NumArrays = 10;//Количество двумерных массивов в трехмерном массиве
float *3dArray =  new float[2dArrayLength*NumArrays]();
unsigned int 2darrayIdx = 5;//Индекс двумерного массива в трехмерном массиве
float ElemFrom3dArray = 3dArray[ColumnIdx+RowIdx*NumCols+2darrayIdx*2dArrayLength];//Доступ к элементу трехмерного массива
delete[] 3dArray;
 
Текущее время: 23:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru