|
|
|||||||||||
Небольшой шаблонный класс matrix: комментарии/критика относительно кода с точки зрения правильности написания09.12.2012, 03:48. Показов 4484. Ответов 22
Метки нет (Все метки)
В плане своего общего развития написал не большой шаблонный класс matrix. Хочу поделиться своей работой с остальными, - может кому то это будет нужно или интересно. Плюс, хотел бы услышать комментарии/критику относительно кода с точки зрения правильности написания и эффективности, кто что думает. Вот собственно код:
1
|
|||||||||||
| 09.12.2012, 03:48 | |
|
Ответы с готовыми решениями:
22
Класс Matrix: реализовать шаблонный класс для двумерных массивов Оценка правильности написания кода Затруднение в правильности написания кода |
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|||
| 09.12.2012, 04:23 | |||
|
После чего, много алгоритмов, можно будет оптимизировать, так как, по всей матрице можно будет пройтись обычным итератором от начала и до конца. Методы max_element, min_element делаются стандартными одноименными алгоритмами STL Многие переопределения операторов можно реализовать через стадартный std::transform, вместо вложенных циклов.
1
|
|||
|
|
||||||
| 09.12.2012, 23:18 [ТС] | ||||||
|
soon и Croessmah, я хотел сделать шаблон наподобие srd::array, думал так лучше но возможно и переделаю так как вы говорите. Да, плюс еще придется переделать динамическое выделение памяти и все шаблоны.
Добавлено через 8 часов 58 минут Итак, существенно переделал код, особенно динамическое выделение памяти (просто поразительно насколько это упростило разработку). Размер матрицы все же решил оставить в параметрах шаблона поскольку это мне кажется логичней и при этом легче перегружать арифметические операторы плюс возможность создавать массивы матриц определенного размера (хотя врятли это кому то пригодится). Немного не уверен в реализации деструктора, не знаю как проверить нету ли точно утечек памяти, но вылетов при тестировании не обнаружил. Вот код:
1
|
||||||
|
Неэпический
|
||
| 09.12.2012, 23:23 | ||
|
Боремся с утечками памяти
Добавлено через 2 минуты
1
|
||
|
What a waste!
1610 / 1302 / 180
Регистрация: 21.04.2012
Сообщений: 2,733
|
|
| 09.12.2012, 23:47 | |
|
1
|
|
|
|
|||
| 10.12.2012, 05:18 | |||
|
Тут оно как-то и вынос мозга и выглядит как-то неэффективно ... разве что может если б массив был статический... Добавлено через 3 минуты
2
|
|||
|
|
|
| 10.12.2012, 05:58 | |
|
Моё мнение: а) класс перегружен всякими возможностями. Ввод-вывод я бы из него точно убрал. Ну не дело это каждому пользовательскому классу разбираться во вводе-выводе! Может его не с консолью будут использовать?
Не по теме: Вообще есть лёгкое впечатление, здесь попытались использовать как можно больше фич языка просто так, чтоб были, "фичи ради фич". чтоб показать, что автор знает С++ и ему не терпится применить экспликты, например. Но это так... субъективное впечатление. б) Проверь умножение матриц.(operator*=(const matrix<U,R,C>& rhs)) Я не сильно вникал в него, но по-моему там должно суммироваться в тройном цикле поэлементное произведени... вобщем посмотри. Добавлено через 9 минут в)Из средств ввода-вывода оставить прекрасный оператор [], чтобы пользователь сам вводил-выводил элементы, какими хочет средствами. Соответственно убрать подключение иострима в заголовочный файл. Я вообще сторонник того, чтобы любой h-файл тянул за собой минимум необходимых инклудов.
1
|
|
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||
| 10.12.2012, 09:54 | ||
|
Kuzia domovenok,
1
|
||
|
What a waste!
1610 / 1302 / 180
Регистрация: 21.04.2012
Сообщений: 2,733
|
|||
| 10.12.2012, 13:46 | |||
|
yuron_477, вот это
0
|
|||
|
|
||||||
| 10.12.2012, 14:12 [ТС] | ||||||
|
Если память выделять так:
0
|
||||||
|
|
||
| 10.12.2012, 23:03 | ||
|
А по мне ввод/вывод, уместен, постоянно нужны по операции i/o
Думаю можно смело надеяться что пользователь будет использовать STL ( а если нет то его проблемы ), в том числе этот хедер. В/в нужен как минимум для отладки, и демонстрации, а вывод в два цикла как-то не особо выглядит. Что касается класса то не вижу причин что бы делать его с динамическим массивом ( тем более с задаваемыми размерами в шаблоне) по тому как я помню нет ситуация в математике когда надо изменять размер матрицы.
0
|
||
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
||
| 11.12.2012, 00:13 | ||
|
1
|
||
|
|
||
| 11.12.2012, 03:39 | ||
|
В том что можно будет отлавливать при new ошибку выделения памяти внутри класса? Собственно при статическом массиве разве не будет ошибка обнаруживаться на этапе компиляции ?
0
|
||
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
||||||||||||||
| 11.12.2012, 03:46 | ||||||||||||||
|
Попробуйте два вот таких кода:
Можно конечно увеличить размер стека задав параметры компилятору, но он не предназначен для хранения таких объемов данных.
1
|
||||||||||||||
|
|
|||||||
| 11.12.2012, 04:39 | |||||||
|
Спасибо!
Собственно уже попробовал пример из вики http://ru.wikipedia.org/wiki/%... 0%BA%D0%B0
0
|
|||||||
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
| 11.12.2012, 04:48 | |
|
Avazart, это зависит от платформы и компилятора, стандартных средств нет.
0
|
|
|
|
|
| 11.12.2012, 18:42 | |
|
Собственно нашел в Builder-е это (в опциях делфи компилятора
) , просто вспомнилась такая тема Шаблоны или ... (Maximum option context replay depth exceeded)
0
|
|
|
279 / 39 / 13
Регистрация: 11.10.2015
Сообщений: 405
|
||||||
| 08.04.2017, 00:54 | ||||||
|
Kuzia domovenok, умножение можно так написать:
0
|
||||||
| 08.04.2017, 00:54 | |
|
Помогаю со студенческими работами здесь
20
Если два метода выполняют одно и то же - с точки зрения программы, но разное - с точки зрения логики? Валидность кода с точки зрения поисковика C# правильность кода с точки зрения ООП Как оптимально (с точки зрения безопасности и оптимизации кода) организовать подключение к БД Как выглядит объявление переменной на уровне машинных команд — с точки зрения оптимизации кода? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|