Qraizer
Advanced Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору Mr Nobody Цитата: Написать класс Matrix не проблема и потом работать как в Матлабе. Но, есть но, как иницилизировать конструктор? То есть, та же проблема, как передать матрицу! | Не знаю, как у тебя выглядит твой класс матрицы, но догадываюсь, что конструктор может выглядеть примерно так: Код: template <typename T, typename std::vector<std::vector<T> >::size_type N, typename std::vector<T>::size_type M> class Matrix { std::vector<std::vector<T> > storage; public: Matrix(const T* init) { storage.resize(N); for (std::vector<std::vector<T> >::size_type i=0; i<N; ++i) { storage[ i ].resize(M); std::copy(init+i*M, init+(i+1)*M, storage[ i ].begin()); } } /* ... */ }; | Вообще же, в новом стандарте что-то обещали на предмет облегчения статической инициализации контейнеров. Я, впрочем, не имел в виду конкретный случай. Я говорил о поддержке матриц в C++ вообще. К слову, целый класс может и не понадобиться. Просто заюзать вектор векторов уже достаточно для полноценного двумерного массива без сопутствующих проблем с неизвестной размерностью. Цитата: Потом, я думаю, что вы в курсе, есть масса компьютеров, у которых есть Си и нет С++. Я сейчас решил не бороться с Си, а использовать, что он предлагает. Я передаю в функцию матрицу как одномерный массив, а в функции работаю как с матрицей. | Ну, я знаю только две причины отсутствия С++: C++ не инсталлирован - решение очевидно; имеется в виду встроенная система - тут, конечно, сложнее, но решение в виде EDG скорее всего всё равно есть, правда, не бесплатное, но и другие решения тоже не от меценатов. Впрочем, на встроенных системах бывает и C нету. Один ассемблер. Код показывать, я думаю, незачем. Я представляю себе, как он может выглядеть. А раз вопросов по нему нет, значит работает. Если вопросы есть - милости прошу, поучаствуем.
---------- Одни с годами умнеют, другие становятся старше. |
| Всего записей: 613 | Зарегистр. 08-08-2006 | Отправлено: 16:38 06-11-2007 | Исправлено: Qraizer, 16:41 06-11-2007 |
|