|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Обучаемся проектированию двухмерных и трехмерных движков: шаблоны, матрицы и векторы |
|
C/C++ - Обучаемся проектированию двухмерных и трехмерных движков: шаблоны, матрицы и векторы
|
Ветеран Сообщения: 1404 |
Профиль | Отправить PM | Цитировать Мне нужна матрица из векторов, например такого вида
(0,0,0) (1,1,1) (1,1,1) (1,1,1) Для этого нужно, чтобы я мог создавать матрицу произвольного типа : то есть, чтобы функция получила тип и динамически создала данные нужного типа 1. Как описать произвольный тип матрицы? (Насколько правильно такое описание?) 2. Как функции передать тип матрицы, которая мне нужна, чтобы она создала матрицу нужного типа? 3. Как функция может определить что за параметр T ей "прислали"? Нужно чтобы функция автоматически определила тип T и динамически создала данные нового типа matrx create_matrix(int rows, int columns); matrx create_matrix(int rows, int columns) { matrx matrix; matrix = new vectr[rows]; for(int k=0;k<rows;k++) { matrix[k]=new T[columns]; } return (matrix); } Сейчас в таком виде typedef doubl** matrx; matrx create_matrix(int rows, int columns); matrx create_matrix(int rows, int columns) { matrx matrix; matrix = new vectr[rows]; for(int k=0;k<rows;k++) { matrix[k]=new doubl[columns]; } return (matrix); } |
|
Отправлено: 10:05, 05-07-2008 |
Ветеран Сообщения: 1404
|
Профиль | Отправить PM | Цитировать Видимо, чтобы это сделать, надо реализовывать полностью абстрактные классы и конструкторы в зависимости от типа данных.. Буду читать литературу - с наскока, не понимая до конца синтаксис классов в с++, абстрактный класс матрицы не просто реализовать..
Я хотел объединить эти две функции в одну, используя только методы структурного программирования typedef int doubl; typedef doubl* vectr; typedef COLORREF* vectr_clrs; typedef doubl** matrx; typedef COLORREF** matrx_clrs; matrx create_matrix(int rows, int columns) { matrx matrix; matrix = new vectr[rows]; for(int k=0;k<rows;k++) { matrix[k]=new doubl[columns]; } return (matrix); } matrx_clrs create_color_matrix(int rows, int columns) { matrx_clrs matrix; matrix = new vectr_clrs[rows]; for(int k=0;k<rows;k++) { matrix[k]=new COLORREF[columns]; } return (matrix); } |
------- Отправлено: 11:57, 05-07-2008 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 1404
|
Профиль | Отправить PM | Цитировать Задан такой класс.
Для чего мы ставим ключевое слово typedef в строке "typedef T* iterator;"? Почему нельзя написать "T* iterator;"? |
------- Отправлено: 20:27, 07-07-2008 | #3 |
Ветеран Сообщения: 1180
|
Профиль | Отправить PM | Цитировать для работы с линейной алгеброй в с++ есть шаблоны valarray<typename T>, правда, как говорят разработчики стандарта, за него не было ответсвенного, поэтому он сделан полу-тяп-ляп. В принципе работает, нареканий не было
мтаричные операции так же можно делать через slice |
Отправлено: 15:55, 10-07-2008 | #4 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
C/C++ - [решено] Нахождение обратной матрицы методом Гаусса и рассширенной матрицы | D.Y. | Программирование и базы данных | 64 | 06-05-2011 22:59 | |
C/C++ - Изменение двухмерных массивов | mrcnn | Программирование и базы данных | 9 | 03-07-2008 17:16 | |
C/C++ | Матрицы | Kuron | Программирование и базы данных | 2 | 21-01-2007 10:09 | |
доки по проектированию баз данных. | Vlad Drakula | Вебмастеру | 1 | 12-06-2005 20:26 | |
Формирование матрицы | Sergey Po | Программирование и базы данных | 3 | 28-04-2004 04:47 |
|